尝试提交嵌套属性时出现以下错误:
Can't mass-assign protected attributes: staff
我的User
模型(由Devise创建):
class User < ActiveRecord::Base
attr_accessible :name
has_one :staff
accepts_nested_attributes_for :staff, reject_if: :new_record?
end
我的设计registrations/edit.html.erb
观点:
<%= f.fields_for resource.staff do |s| %>
<%= s.label :notification_email %>
<%= s.email_field :notification_email, placeholder: 'Enter notification email' %>
<% end %>
在HTML帖子中作为参数提交的内容:
"user"=>{"name"=>"Scott",
"staff"=>{"notification_email"=>"myemail@example.com"}}
根据documentation for nested attributes,我希望员工的HTML post参数为"staff_attributes"
,而不仅仅是"staff"
。
我做错了什么吗?我是否真的需要将staff
添加到attr_accessible
属性列表中?这不适用于Devise吗?我必须在视图中使用resource
而不是@user
。
答案 0 :(得分:1)
删除resource.
,如下所示:
<%= f.fields_for :staff do |s| %>
在模型中,将:staff_attribute
(或staff_attributes
不确定)添加到attr_accessible
答案 1 :(得分:0)
传递符号而不是实例。
在用户模型中添加attr_accessible :staff_attributes
。
在用户控制器的新方法中初始化人员实例。