【问题标题】:Multi-nested attributes using accepts_nested_attributes_for does not update any but the first layer of nested objects使用accepts_nested_attributes_for 的多嵌套属性除了第一层嵌套对象外不更新任何内容
【发布时间】:2010-09-10 01:27:34
【问题描述】:

我有一个有趣的难题。我有一个程序表,其中包含许多 install_validation_reactions(不要问!)。我将程序模型设置为accepts_nested_attributes_for :install_validations, :allow_destroy => true,install_validations 和install_validation_reactions 之间也是如此。构建了一个包含所有三层的表单,这就是我所看到的行为:如果我创建一个新的安装验证,我可以根据需要添加或删除尽可能多的安装验证反应,并且它们会正确保存。如果我更改现有安装验证的任何属性,它将正确保存。但。如果我编辑现有的嵌套安装验证反应之一,更改不会保存,我也无法删除它们。提交的数据看起来不错,所以我不认为这是视图。这是一个例子:

Parameters: {"authenticity_token"=>"1I4eJypbS7FxQkLkkvUqqWGEdLhbR2K/f/qIsvb2sm8=", "package"=>{"name"=>"Adobe Acrobat 7", "platform"=>"PC", "licensed"=>"1", "deployment_stage"=>"1", "source_path"=>"adobe/Acrobat 7/", "executable"=>"install.bat", "install_validations_attributes"=>{"0"=>{"success_value"=>"true", "rule_type"=>"ExecRunning", "rule_parameter"=>"Pork Chops", "install_validation_reactions_attributes"=>{"0"=>{"command"=>"wait", "parameter"=>"30", "id"=>"6", "_destroy"=>"1"}}, "_destroy"=>"false", "id"=>"56"}, "1"=>{"success_value"=>"true", "rule_type"=>"ExecRunning", "rule_parameter"=>"pooka", "install_validation_reactions_attributes"=>{"0"=>{"command"=>"repeat", "parameter"=>"3", "id"=>"7", "_destroy"=>"false"}}, "_destroy"=>"false", "id"=>"57"}}}, "commit"=>"Update", "id"=>"7"}

所以,看起来不错,对吧?和安装验证 0 的安装验证反应 0 一样设置为删除,对吗?但事实并非如此。没有错误,没什么。 IT 只是不删除它。有任何想法吗?就像我说的那样,我认为这些观点可能很好,因为参数中的数据看起来很好(我认为?如果错了,请告诉我!)。那么,哪些数据可以帮助你这些优秀的人给我一些见解呢?

顺便说一句,我正在运行 ruby​​ 1.9.1p376 和 rails 3.0.0.beta3。

【问题讨论】:

    标签: ruby-on-rails ruby forms ruby-on-rails-3


    【解决方案1】:

    没关系,我是个白痴。您需要输入一个字段,以便为每个子对象和孙对象提交 id 字段。完成后,更新可以确定要更新的对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多