接受嵌套属性不按预期工作

时间:2012-06-24 17:57:55

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

所以我有一个实体表单接受另一个实体的嵌套属性。这完全没问题。但是,嵌套表单不能按我的意愿运行。见下文:

<table class="datagrid">
  <thead class="datagrid">
        <th width="300" align="left">&nbsp;Item</th>
        <% unless current_user.is_partner? %>
            <th width="100">&nbsp;Location</th>
        <% end %>
        <th>&nbsp;Amount Requested</th>
        <th>&nbsp;Amount Checked Out</th>
  </thead>

    <% session[:clicked_request].items.each do |item| %>  
      <tr class="<%= cycle('dg_list_line_odd', 'dg_list_line_even') %>">  
        <td>&nbsp;<%= link_to "#{item.name}", item_path(item) %></td>  
            <% unless current_user.is_partner? %>
            <td>&nbsp;&nbsp;<%= item.location.name %></td>
            <% end %>
            <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<%= item.requested %></td>
            <td><%= f.text_field :amount, :value => item.requested, :size => 1 %></td>
      </tr>  
    <% end %>
</table>
<p>&nbsp;</p>

正如您所看到的,这里有一个“每个”循环,它允许显示多个项目,并希望创建多个项目。但是,当我按下提交按钮时,无论存在多少项,都只创建其中一个。

非常感谢您的建议。

1 个答案:

答案 0 :(得分:0)

这不是您使用accepts_nested_attributes

呈现表单的方式

假设f是绑定到父对象的表单构建器,则需要执行类似

的操作
<%= f.fields_for :items do |item_form| %>
  <%= item_form.text_field :amount
<% end %>

对于集合中的每个项目,将执行一次该块。此外,item_form设置了正确的前缀,以便控制器端正常工作。