Can't mass-assign protected attributes: home,work
错误在这里.我猜我错过了什么,但我不确定是什么.
无论如何,在我的新应用中,用户有一个Home和一个Work(每个都属于一个用户),我希望用户在注册时输入它们.所以,在我的模特中:
user.rb
attr_accessible :email,:first_name,:last_name,:password,:password_confirmation,:home_attributes,:work_attributes has_one :home,:work accepts_nested_attributes_for :work,:home has_secure_password
home.rb
attr_accessible :address,:latitude,:longitude,:user_IDbelongs_to :uservalIDates :address,presence: true
work.rb
attr_accessible :address,presence: true
在我的控制器中
users_controller.rb
def new @user = User.new respond_to do |format| format.HTML # new.HTML.erb format.Json { redirect_to @user } endend
并以我的形式:
意见/用户/ _form.HTML.haml
= form_for @user do |f| - if @user.errors.any? .error_explanation %h2 = pluralize(@user.errors.count,"error") prohibited this post from being saved: %ul - @user.errors.full_messages.each do |msg| %li= msg = f.label :first_name = f.text_fIEld :first_name = f.label :last_name = f.text_fIEld :last_name = f.label :email = f.text_fIEld :email = f.label :password = f.password_fIEld :password = f.label :password_confirmation,"Re-Enter Password" = f.password_fIEld :password_confirmation = f.fIElds_for :home do |builder| = builder.label :address,"Home address" = builder.text_fIEld :address %br = f.fIElds_for :work do |builder| = builder.label :address,"Work address" = builder.text_fIEld :address .btn-group = f.submit 'Sign Up!',class: "btn"解决方法 看起来您没有设置实例变量来包含这些属性.
在你的控制器中你应该有这样的东西
def new @user = User.new @user.homes.build @user.works.build respond_to do |format| format.HTML # new.HTML.erb format.Json { redirect_to @user } endend
如果您不构建这些属性,则表单不知道该怎么做.
编辑:修复了构建嵌套资源的语法
总结以上是内存溢出为你收集整理的ruby-on-rails – 嵌套表单 – 无法批量分配受保护的属性全部内容,希望文章能够帮你解决ruby-on-rails – 嵌套表单 – 无法批量分配受保护的属性所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)