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 => []}, .....) 
相關問題