ネストされた形式でチェックボックスを実装しようとしています。
科目、レッスン、グループの3つのモデルがあります。サブジェクトには多くのレッスンがあり、各レッスンには多くのグループがあり、それらに属しています。
別の言い方をすれば、親クラスとしてサブジェクト、子クラスとしてレッスン、「孫」クラスとしてグループがあります。
サブジェクトフォームでは、ネストされたフォームで3つのレッスンを作成することを許可しました。事前にグループを作成しましたが、今は各レッスンでグループのHABTMチェックボックスを作成したいのですが、Railsでパラメーターを送信しようとすると問題が発生します。
パラメータの主な違いは、現在送信していることです
"lesson"=>{"group_ids"=>["105", "106", "107"]}
そのままで。ただし、私が望んでいるのは、対象の個々のレッスンごとにgroup_idsを送信することです。
"lessons_attributes"=>{"0"=>{"lesson_type"=>"Lecture",
"id"=>"348",
"group_ids"=>["37", "38", "39", "40", "41", "42", "131"]}.
詳述すると、これは私が送信している現在のパラメータです。
Parameters: {"utf8"=>"✓", "authenticity_token"=>"7r9g2d4lmiSyNZ60i8uos9m1shxVwb0Ly23Tkrshv8w=", "subject"=>{"subject_code"=>"", "subject_name"=>"",
"lessons_attributes"=>{"0"=>{"lesson_type"=>"Lecture", "id"=>"348"},
"1"=>{"lesson_type"=>"Tutorial","id"=>"349"},
"2"=>{"lesson_type"=>"Laboratory","id"=>"350"}},
"remarks"=>""},
"lesson"=>{"group_ids"=>["105", "106", "107"]}, "commit"=>"Update Subject", "id"=>"166"}
ただし、送信したいパラメーターは次のとおりです。
Parameters: {"utf8"=>"✓", "authenticity_token"=>"7r9g2d4lmiSyNZ60i8uos9m1shxVwb0Ly23Tkrshv8w=", "subject"=>{"subject_code"=>"", "subject_name"=>"",
"lessons_attributes"=>{"0"=>{"lesson_type"=>"Lecture", "id"=>"348","group_ids"=>["37", "38", "39", "40", "41", "42", "131"]},
"1"=>{"lesson_type"=>"Tutorial","id"=>"349",
"group_ids"=>["37", "38", "39", "40", "41", "42", "131"],
"2"=>{"lesson_type"=>"Laboratory","id"=>"350",
"group_ids"=>["37", "38", "39", "40", "41", "42", "131"]}}, "remarks"=>""}, "commit"=>"Update Subject", "id"=>"166"}
パラメータを正しく送信していません。問題は次のとおりです。`
<%= check_box_tag "lesson[group_ids][]", group.id, f.object.groups.include?(group) , id: "lesson_group_ids_#{group.id}"%>`
特に、私のチェックボックスでは、これを実装しています:lesson[group_ids][]。
また、lesson_attributes[group_ids][]も試しました。しかし、同様に、私はHABTM関係を保存することができませんでした。グループが各レッスンのために保存するように私が何ができるかについてはわかりません。どんな助けでもいただければ幸いです。
関連するコードは次のとおりです。
<%= form_for(@subject) do |f| %>
<div class="field">
<%= f.label :subject_name %><br />
<%= f.text_field :subject_name %>
</div>
<div>
<%= f.fields_for :lessons do |lesson| %>
<%= render "lesson_fields", :f => lesson %>
<% end %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
_lesson_fields.html.erbには、次のものがあります。
<div class="field">
<%= f.label :lesson_type %><br />
<%= f.text_field :lesson_type,:readonly => true %>
</div>
<div>
<% Group.all.each do |group|%>
<div>
<%= check_box_tag "lesson[group_ids][]", group.id, f.object.groups.include?(group) , id: "lesson_group_ids_#{group.id}"%>
<%= group.group_index %>
</div>
<%end%>
</div>
そしてモデルのために
関連するモデル:
class Subject < ActiveRecord::Base
attr_accessible :lessons_attributes
has_many :lessons
end
class Lesson < ActiveRecord::Base
belongs_to :subject
has_and_belongs_to_many :groups
end
class Group < ActiveRecord::Base
has_and_belongs_to_many :lessons
end