Так у меня есть такая ассоциация:Рельсы. HAS_MANY: через и form_for PARAMS для поля CheckBox
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 уже находится в second_model_ids
массиве FirstModel в. В этом случае я бы ожидать что-то подобное, если заявление - если этот идентификатор есть то же, что и т.д.
И эта часть делает меня еще более запутанным:
:name => 'first_model[second_model_ids][]'
Где что :name
пришел? Почему у first_model[second_model_ids][]
есть две квадратные скобки - как они работают в синтаксисе Rails? Слить этот вновь проверенный идентификатор с массивом second_model_ids
?
Буду признателен за всю информацию. Благодаря!