rails:如何使用“accepts_nested_attributes”更新多个记录

时间:2017-04-14 20:18:26

标签: ruby-on-rails simple-form nested-forms nested-attributes

假设我有 cat 模型和生活模型。让我们说一只猫(@cathas_many生活,一只猫accepts_nested_attributes for生命。 现在,如果我想一次更新7个生命(@lives),使用一个form_for(@cat),那么该形式将如何?这是我尝试过的,但在这种形式下,只有最后一生的属性被传递给params哈希:

  <%= form_for(@cat) do |f| %>
    <% @lives.each do |life| %>
      <%= f.fields_for(life) do |l| %>
        <%= l.input :date_of_birth, as: :date %>
      <% end %>
    <% end %>
    <%= f.submit %>
  <% end %>

1 个答案:

答案 0 :(得分:2)

您需要在控制器中构建属性

@cat = Cat.find(<criteria>)
@cat.lives.build

在您的示例中,循环内部有一个循环。试试这个:

<%= form_for(@cat) do |f| %>
  <%= f.fields_for(:lives) do |l| %>
    <%= l.input :date_of_birth, as: :date %>
  <% end %>
  <%= f.submit %>
<% end %>