我在保存classroom_students时遇到麻烦。表单识别正确的参数,它们只是不会保存到数据库中。我知道已经问过类似的问题,但是没有一个答案(我见过的(解决了我的问题。
错误消息:
未经许可的参数:student_ids
我试图通过classroom_students表
将学生添加到教室//classroom.rb
has_many :classroom_students
has_many :students, through: :classroom_students
accepts_nested_attributes_for :classroom_students
//student.rb
has_many:classroom_studentshas_many:教室,通过:: classroom_students
//classroomstudent.rb(加入表(
belongs_to :classroom
belongs_to :student
//教室控制器
def classroom_params
params.require(:classroom).permit(:name, :description, :teacher_id,
classroom_student_attributes:[:student_ids => []])
end
顺便说一句,所有其他属性都在教室中保存到数据库中。
//形式创建教室
<%= simple_form_for @classroom do |f| %>
<%= f.input :name %>
<%= f.input :description %>
<%= f.simple_fields_for :classroom_students do |classroom_students| %>
<%= f.association :students, as: :check_boxes %>
<% end %>
<%= f.button :submit %>
<% end %>
所有学生姓名显示,当提交表格时,将在教室下阅读。
Parameters: {"utt8"=>"✓", "authenticity_token"=>"jklqjwerqjfeiqwjrkljfa231=", "classroom"=>{"name"=>"Not Violin Class", "description"=>"It's not", "student_ids"=>["1", "3", ""]}, "commit"=>"Create Classroom"}
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT 1 [["id", 9]]
Unpermitted parameter: student_ids
(0.2ms) begin transaction
SQL (0.4ms) INSERT INTO "classrooms" ("name", "description", "teacher_id") VALUES (?, ?, ?) [["name", "Not Violin Class"], ["description", "Please Please Please"], ["teacher_id", 9]]
(11.2ms) commit transaction
任何反馈都将不胜感激,我还没有解决这个问题。谢谢。
未经许可的参数:student_ids
您在classromm
哈希中发送student_ids
,您需要在classroom_students
Hash
更改此
<%= f.simple_fields_for :classroom_students do |classroom_students| %>
<%= f.association :students, as: :check_boxes %>
<% end %>
to
<%= f.simple_fields_for :classroom_students do |classroom_students| %>
<%= classroom_students.association :students, as: :check_boxes %>
<% end %>
另外, classroom_student_attributes
应该是 classroom_students_attributes
def classroom_params
params.require(:classroom).permit(:name, :description, :teacher_id, classroom_students_attributes: [:student_ids => []])
end
更新:
协会:未找到学生
这是因为classroom_student
上的关联是belongs_to :student
,所以此行
<%= classroom_students.association :students, as: :check_boxes %>
应该是
<%= classroom_students.association :student, as: :check_boxes %>