你好我有嵌套表格的问题..我正在寻找一个小时,不知道我忘记了..
模型/ trainer.rb
class Trainer < ActiveRecord::Base
attr_accessible :telephone, :user_attributes
has_one :user
accepts_nested_attributes_for :user
end
模型/ user.rb
class User < ActiveRecord::Base
belongs_to :trainer
attr_accessible :email, :image_url, :name, :password_hash, :password_salt, ...
attr_accessible :password, :password_confirmation
attr_accessor :password
before_save :encrypt_password
<+ validations ...>
控制器/ trainers_controller.rb
def new
@trainer = Trainer.new
@trainer.build_user
respond_to do |format|
format.html # new.html.erb
format.json { render json: @trainer }
end
end
我可以显示新的培训师表单视图(我将所有用户列添加为嵌套) 但是当我点击CREATE我得到
Can't mass-assign protected attributes: user
怎么了?谢谢
编辑:我的数据库架构看起来像
[users]
id
trainer_id
name
surname
[trainers]
telephone
如果有兴趣的话,我上传了简化简易应用程序:) https://github.com/ScottHiscock/NestedForm
答案 0 :(得分:2)
参考accepts_nested_attributes_for
为指定的关联定义属性writer。 如果您使用的是
attr_protected
或attr_accessible
,则需要添加 属性writer到允许列表。
所以我认为你必须做以下事情:
class Trainer < ActiveRecord::Base
attr_accessible :telephone, :user_attributes
答案 1 :(得分:0)
还要将用户添加到trainer.rb模型的attr_accessible列表,如下所示
attr_accessible:telephone,:user_attributes
或试试这个
attr_accessible:telephone,:user
答案 2 :(得分:0)
错误在视野中,我有
<%= f.fields_for :users do |u| %>
但是正确的是
<%= f.fields_for :user do |u| %>
: - )