我似乎无法使用accepts_nested_attributes_for
命令删除项目,但我已根据this tutorial和相关的git repo执行此操作。我的模特是......
class Job < ActiveRecord::Base
has_many :specialties, :inverse_of => :job
accepts_nested_attributes_for :specialties, allow_destroy: true, :reject_if => :all_blank
end
class Specialty < ActiveRecord::Base
belongs_to :job, :inverse_of => :specialties
end
在Job
表单中,我有...
<%= f.check_box :_destroy %>
<%= f.label :_destroy, "Remove Specialty" %>
当我点击复选框删除几个specialties
时,没有任何反应。我检查了服务器输出并收到了:
在2013-07-16 16:15:16 -0400为127.0.0.1启动PATCH“/ jobs / 1”
由JobsController处理#update为HTML
参数:{“utf8”=&gt;“✓”,“authenticity_token”=&gt;“8VxYXujcKXpLEm8 + 7B43SLU6X3fH00kIOmFK + nvaBKs =”,“job”=&gt; {“name”=&gt;“Cook”,“description “=&gt;”制作食物。“,”specialties_attributes“=&gt; {”2“=&gt; {”name“=&gt;”“,”description“=&gt;”“,”_ destroy“=&gt;” 1“,”id“=&gt;”3“},”3“=&gt; {”name“=&gt;”“,”description“=&gt;”“,”_ destroy“=&gt;”1“,” id“=&gt;”4“}}},”commit“=&gt;”更新作业“,”id“=&gt;”1“}
作业加载(0.1ms)选择“作业”。* FROM“作业”WHERE“作业”。“id”=? LIMIT 1 [[“id”,“1”]]
未经许可的参数:_destroy
未经许可的参数:_destroy
未经许可的参数:_destroy
未经许可的参数:_destroy
我错过了什么?我已经完成了教程和回购了很多次,我看不出去哪里了。
答案 0 :(得分:13)
那是因为strong_parameters。您现在需要permit
个密钥。在你的行动中:
params.permit(:_destroy)
答案 1 :(得分:12)
我喜欢@Damien Roche的答案,但它只是为了不与任何人混淆。按照这个
In job_controller.rb
private
def job_params
params.require(:job).permit(:id, :description, :specialty_fields_attributes => [:id, :job_id, :avatar, :_destroy])
end