如何在具有嵌套属性的Rails控制器中使用restore_attributes?

时间:2017-07-06 21:10:44

标签: ruby-on-rails ruby rails-activerecord activemodel

实施例: 一个src/caffe/net.cpp模型Person一个accepts_nested_attributes_for模型,如示例here中所示。使用嵌套Pets提交form_for(@person)会点击PeoplesController中的更新方法。如果存在不成功的保存,即由于宠物的名称未通过fields_for :pets验证,如何使用ActiveModel :: Dirty恢复对pet实例所做的更改,从而恢复所做的更改 在形式?我想这样做,以便嵌套的表单输入将保留他们预先保存的宠物的值,而不是空白。

示例:

presence: true

1 个答案:

答案 0 :(得分:1)

我找到了完成这项工作的方法。使用嵌套的fields_for时,您可以访问该表单中的对象,因此可以在其上调用restore_attributes等。

一个粗略的例子:

<%= form_for(@person) do |f| %>
  <%= f.fields_for :pets do |ff| %>
    <%  
    if ff.object.errors
      ff.object.restore_attributes
    end 
    %> 
  <% end %>
<% end %>
相关问题