0
我有一個Rails 4應用程序,其中型號爲Challenge
和ChallengeList
。這是一個多對多的關係,所以我也有一個與ChallengeListsChallenge
型號的連接表。我定義這最後的模型,因爲我希望我的ChallengeLists
被有序列表,所以用它來開發acts_as_list
:以多對多關係的嵌套格式存儲訂單
class ChallengeList < ActiveRecord::Base
has_many :challenge_lists_challenges, :dependent => :destroy
has_many :challenges, :through => :challenge_lists_challenges
accepts_nested_attributes_for :challenges
end
class ChallengeListsChallenge < ActiveRecord::Base
default_scope :order => 'position'
belongs_to :challenge
belongs_to :challenge_list
acts_as_list :scope => :challenge_list
end
這工作得很好。
在我的HTML中,我有一個表單,允許用戶定義一個新的ChallengeList
。它有Challenges
嵌套形式:
= f.fields_for :challenges do |challenge_builder|
.field
= challenge_builder.text_field :description
但我也想用戶能夠改變位置。所以,我以爲我會很聰明,添加一個字段的位置:
= challenge_builder.text_field :position
當然,這是不行的,因爲「位置」設置上加入的項目,而不是Challenge
項目。
具有ChallengeListsChallenges
嵌套形式會給我訪問的位置,但不冷靜,因爲:
- 我需要我的
ChallengeList
ID的引用(這是無法逾越的,但不漂亮要麼) - 我只能引用現有
Challenge
IDS
所以我能做些什麼?
您是否試圖在相同的表單中更改挑戰和ChallengeList?是的,這會變得有點難看。也許你顯示允許使用jQuery插件在展示頁面上重新排序,並且不會在編輯頁面上重新排序。 –
這就是我所追求的!我發現[這個問題](http://stackoverflow.com/questions/2182428/rails-nested-form-with-has-many-through-how-to-edit-attributes-of-join-model?rq=1 ),這看起來大概是我試圖達到的同樣的事情。所以我想試試看,並報告我的發現。 – Maarten