我试图在嵌套窗体中实现一个复选框。我有3个模型:主题,课程和组。 A主题有许多经验教训,每门课都有,属于许多小组。嵌套窗体中的Rails复选框
为了把它以另一种方式: 我主题作为父类,教训作为子类和组为“孙子”级。
在“主题”表单中,我允许以嵌套形式创建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}"%>`
,特别是对于我的复选框我采取这样的:课[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