は、だから私は協会のこの種類があります。Rails。 HAS_MANY:通って、チェックボックスフィールドのためのform_forのparams
class FirstModel
has_many :merged_models
has_many :second_models, :through => :merged_models
end
class SecondModel
has_many :merged_models
has_many :first_models, :through => :merged_models
end
class MergedModel
belongs_to :first_model
belongs_to :second_model
end
を今私の問題は私に渡されたコレクションからHTMLの要素を認識するヘルパーを助け、このトリックを理解することです形式:
form_for(first_model) do |f|
<% SecondModel.all.each do |s| -%>
<div>
<%= check_box_tag 'second_model_ids[]', s.id, first_model.second_models.include?(s), :name => 'first_model[second_model_ids][]'-%>
<%= label_tag :second_model_ids, s.first_name -%>
</div>
<% end -%>
私は理解していないことはこれです:
first_model.second_models.include?(s), :name => 'first_model[second_model_ids][]'
first_model.second_models.include?(s)
チェックSecondModelのオブジェクトIDがFirstModelのsecond_model_ids
配列中の場合:私は、これがあると信じています。
:name
から来た
:name => 'first_model[second_model_ids][]'
:?このIDは、その後など
、ということが行うされており、この部分は、私はさらに混乱して行う場合 - この場合、私は、if文のようなものを期待しますかなぜfirst_model[second_model_ids][]
に2つの角括弧があるのですか?それらはRails構文でどのように機能しますか?これを新しくチェックしたIDをsecond_model_ids
配列にマージするには?
私はすべての情報をいただければ幸いです。ありがとう!あなたのケースで
check_box_tag(name, value = "1", checked = false, options = {})
:
check_box_tag 'second_model_ids[]', s.id, first_model.second_models.include?(s), :name => 'first_model[second_model_ids][]'
最初のパラメータ(名前)が 'second_model_idsは[]' は、これはID =一部として使用されている