그래서 나는 이런 종류의 연관이 체크 박스 필드 통해 form_for PARAMS :레일. Has_many :
이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의 요소를 인식하는 데 도움이 트릭을 이해하는 것입니다 내 형태 :
first_model.second_models.include?(s), :name => 'first_model[second_model_ids][]'
:
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 -%>
내가 이해하지 못하는 것은 이것이다 나는 생각이 그 : SecondModel의 객체 ID가 FirstModel의 second_model_ids
배열에 이미있는 경우
first_model.second_models.include?(s)
확인합니다. 그 :name
에서 온
:name => 'first_model[second_model_ids][]'
이 ID가
는 그리고이 부분은 나를 더욱 혼란하게않는 등의 것을 다음이있는 경우 -이 경우에는 내가 문이 경우 같은 것을 기대? first_model[second_model_ids][]
에 두 개의 대괄호가있는 이유 - 레일스 구문에서 어떻게 작동합니까? 이 새로 검사 한 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 = 일부로 사용될 것이다