Rails 4.2 保存 has_and_belongs_to_many 关联 ID
Rails 4.2 saving has_and_belongs_to_many association Ids
我有以下代码可以在 Rails 4.1 和 protected_attributes gem 中正常工作(我还没有将我的代码移动到 strong_parameters )
models/employee.rb
class Employee
has_and_belongs_to_many :skills
attr_accessible :skill_ids, ...
end
models/skill.rb
class Skill
has_and_belongs_to_many :employees
end
我在更新员工时将技能绑定到员工,所以我的视图如下所示
views/employees/_form.html.erb
<%= form_for @employee, do |f| %>
.....
<%= f.collection_select :skill_ids, Skill.all, :id, :name, {},
{:multiple => true, class: 'select2 '} %>
......
<% end %>
skill_ids 是 attr_accessible 参数的一部分,因此它在保存员工表单时完美运行。
(注意:这甚至不需要 accepts_nested_attributes_for:在员工模型中设置的技能)
Rails 4.2
我正在将我的代码迁移到 Rails 4.2 并转向强参数。
我已经在员工控制器中将 skill_ids 列入白名单并在更新操作中调用它,如下所示:
controllers/employee_controller.rb
def update
@employee = Employee.find(params[:id])
@employee.update_attributes(employee_params)
end
private
def employee_params
params.require(:employee).permit(:skill_ids, .....)
end
但它不会更新员工的技能 ID。
有人可以告诉我 Rails 4.2 中有哪些更改可以保存这些关联值吗?
谢谢。
问题是我如何将参数列入白名单。它应该像这样作为数组参数列入白名单:
params.require(:employee).permit({:skill_ids => []}, .....)
我有以下代码可以在 Rails 4.1 和 protected_attributes gem 中正常工作(我还没有将我的代码移动到 strong_parameters )
models/employee.rb
class Employee
has_and_belongs_to_many :skills
attr_accessible :skill_ids, ...
end
models/skill.rb
class Skill
has_and_belongs_to_many :employees
end
我在更新员工时将技能绑定到员工,所以我的视图如下所示
views/employees/_form.html.erb
<%= form_for @employee, do |f| %>
.....
<%= f.collection_select :skill_ids, Skill.all, :id, :name, {},
{:multiple => true, class: 'select2 '} %>
......
<% end %>
skill_ids 是 attr_accessible 参数的一部分,因此它在保存员工表单时完美运行。 (注意:这甚至不需要 accepts_nested_attributes_for:在员工模型中设置的技能)
Rails 4.2
我正在将我的代码迁移到 Rails 4.2 并转向强参数。
我已经在员工控制器中将 skill_ids 列入白名单并在更新操作中调用它,如下所示:
controllers/employee_controller.rb
def update
@employee = Employee.find(params[:id])
@employee.update_attributes(employee_params)
end
private
def employee_params
params.require(:employee).permit(:skill_ids, .....)
end
但它不会更新员工的技能 ID。
有人可以告诉我 Rails 4.2 中有哪些更改可以保存这些关联值吗?
谢谢。
问题是我如何将参数列入白名单。它应该像这样作为数组参数列入白名单:
params.require(:employee).permit({:skill_ids => []}, .....)