如何正确配置rails 3嵌套属性

时间:2012-04-20 22:17:04

标签: ruby-on-rails ruby-on-rails-3 nested-attributes

我有2个型号。会员和调查

member.rb如下

Class Member < ActiveRecord::Base
  has_one :survey, :dependent => :destroy
  accepts_nested_attributes_for :survey

  attr_accessible :fname,:lname, :address, :city, :state, :zip, :email, :phone, :phone_alt, :e_contact, :e_contact_phone, :physician, :physician_phone, :chiropractor, :chiropractor_phone, :password, :password_confirmation, :remember_me, :survey_attributes

end

survey.rb如下

Class Survey < ActiveRecord::base
  belongs_to :member
end

但是,每当我尝试使用我收到的调查属性创建成员时

  

ActiveModel :: MassAssignmentSecurity ::错误:无法批量分配受保护的属性:调查

我正在通过控制台对此进行测试。

1 个答案:

答案 0 :(得分:2)

使用has_one关联时,可访问的调用应为:

attr_accessible :survey_attributes

您发布的参数需要嵌套,如下所示:

params = { :member => { :name => 'Jack', :survey_attributes => { :attribute => 'value' } } }

在表单中确保您正确构建嵌套关系,即。你必须使用:

= form_for @member do |f|
  ...
  = f.fields_for :survey do |s|
    ...

如果你有这样的设置,它应该工作。如果这没有捕获您的错误,那么请显示您在控制台中尝试的内容的日志,并且无法正常工作。

有关详细信息,请参阅Rails API中的#accepts_nested_attributes_for