3

我有一个工作的罚款与protected_attributes创业板的Rails 4.1以下的代码位(我没有我的代码移到strong_parameters还)的Rails 4.2节能has_and_belongs_to_many关联标识

型号/ employee.rb

class Employee 

    has_and_belongs_to_many :skills 

    attr_accessible :skill_ids, ... 

end 

型号/ skill.rb

class Skill 
    has_and_belongs_to_many :employees 
end 

我绑定技能的员工,同时更新雇员,所以我的观点看起来像下面

的意见/员工/ _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则params的一部分,所以它的工作完美,同时节省了员工的形式。 (注:这甚至不需要accepts_nested_attributes_for:技能设定在员工模型)

的Rails 4.2

我在迁移我的代码到Rails 4.2和移动到强参数的过程。

我白名单中的员工控制器skill_ids和调用上的更新动作,就像这样:

控制器/ 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中为保存这些关联值而发生了哪些变化?

谢谢。

回答

5

问题是我如何将参数列入白名单。它应该被列入白名单,如下所示:

params.require(:employee).permit({:skill_ids => []}, .....) 
相关问题