ruby-on-rails - 嵌套表单 & update_attributes

标签 ruby-on-rails nested-forms

我在以多级嵌套形式更新数据时遇到问题。我使用部分来包含创建和更新 View 的所有字段,并且我在创建时没有问题。只有更新。

基本上结构(简化)是:

user has_one profile
profile has_many addresses

form_for @user do |u|
  u.fields_for :profile do |p|
    p.fields_for :addresses do |a|

就像我说的,创建用户、个人资料和地址工作正常。直到我尝试更新我才发现问题。我没有收到错误,它实际上表明它已成功更新。它实际上确实正确更新了用户和个人资料字段,而不是地址字段。

这是来自堆栈跟踪的更新参数。 (再次,总结和格式化)
Parameters: {"controller"=>"profiles", "action"=>"update", "_method"=>"put", "id"=>"1", 
  "user"=>{"login" => "username",
    "profile_attributes"=>{"first_name"=>"Admin",
      "addresses_attributes"=>{
        "0"=>{"address"=>"123 Address Ave.", "city"=>"Cityville", "state"=>"CA"}
      }
    }
  }
}

我能找到的所有文档只显示 1 个嵌套表单,所以我不确定我是否正确使用 update_attributes 超过 1 级深度。

有什么想法吗?

最佳答案

您是否在模型中的任何位置使用 attr_accessible 将允许批量分配的字段列入白名单?如果是这样,那么你会 also need to add

attr_accessible :address_attributes

允许将这些属性传递给 update_attributes

如果您还没有使用 attr_accessible (或者它不是推荐的姐妹 attr_protected ),那么不要添加这一行,因为它会停止保存您的所有属性。

关于ruby-on-rails - 嵌套表单 & update_attributes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3767525/

相关文章:

ruby-on-rails - 尝试关注一本书,但没有生成我的表格,这是为什么?

ruby-on-rails - Ruby on Rails 表单输入

css - 备用列 (<td>) 类,甚至可能是 Rails 中的列内容?

ruby-on-rails - 使用 Rails 的多步嵌套表单

ruby-on-rails-3 - Rails3 : Nested form doesn't save because id

ruby-on-rails - 城市/国家文本字段验证

ruby-on-rails - rails/回形针 : file_field not displaying

ruby-on-rails - Rails - 如何在不使用 Accepts_nested_attributes_for 的情况下管理嵌套属性?

ruby-on-rails - link_to_remove_association : undefined method `new_record?' for nil:NilClass

ruby-on-rails - fields_for 不渲染 - rails 3