未渗透的参数:嵌套形式的student_ids



我在保存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 %>

最新更新