我正在使用collection_check_boxes通過關係在has_many中創建對象; 這裏有些型號:select_check_boxes與一個有很多直通關係和:checked選項
#emotion.rb
class Emotion < ActiveRecord::Base
has_many :emotional_states
has_many :reports, :through => :emotional_states
end
#report.rb
class Report < ActiveRecord::Base
has_many :emotional_states
has_many :emotions, :through => :emotional_states
[... other "irrelevant" stuff here ...]
end
#emotional_states.rb
class EmotionalState < ActiveRecord::Base
belongs_to :report
belongs_to :emotion
end
當我創建一個報告我也有collection_check_box選擇情緒我要綁定到該報告(通過模型EmotionalState)的列表正如你可以理解;一切工作在創建(我檢索散列值,如果@ report.save我也創建EmotionalStates與@ report.id和@ emotion.id。)
但是,當它來編輯報告我想編輯還有相關的EmotionalStates(這意味着創建新的EmotionalStates或刪除舊的EmotionalStates)。
如何使用所有可用的情緒填充select_check_boxes,檢查是否通過EmotionalStates項目關聯了情感?
如果我寫的是這樣的:
<%= collection_check_boxes(:report, :emotion_id, @report.emotional_states.map{|e| e.emotion}, :id, :name) %>
我會爲每alredy相關情緒的未選中的複選框。
<%= collection_check_boxes(:report, :emotion_id, Emotion.all, :id, :name, :checked => @report.emotional_states.map{|e| e.emotion}) %>
雖然這個代碼將正確返回Emotion.all,但不會檢查alredy有關通過@ report.emotional_states到@report情緒。
我找遍了所有周圍的wheb上的的用法示例:檢查collection_select_boxes選項沒有任何結果... 任何暗示?