ruby-on-rails – 嵌套表单 – 无法批量分配受保护的属性

ruby-on-rails – 嵌套表单 – 无法批量分配受保护的属性,第1张

概述我有点难过这个,因为我觉得我已经躲过了常见的错误(比如 mistyping the attr_accessible或 leaving it out altogether),但我还是得到了一个 Can't mass-assign protected attributes: home, work 错误在这里.我猜我错过了什么,但我不确定是什么. 无论如何,在我的新应用中,用户有一个Home和一个Wor 我有点难过这个,因为我觉得我已经躲过了常见的错误(比如 mistyping the attr_accessible或 leaving it out altogether),但我还是得到了一个

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 – 嵌套表单 – 无法批量分配受保护的属性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1275635.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存