所以我有一个实体表单接受另一个实体的嵌套属性。这完全没问题。但是,嵌套表单不能按我的意愿运行。见下文:
<table class="datagrid">
<thead class="datagrid">
<th width="300" align="left"> Item</th>
<% unless current_user.is_partner? %>
<th width="100"> Location</th>
<% end %>
<th> Amount Requested</th>
<th> Amount Checked Out</th>
</thead>
<% session[:clicked_request].items.each do |item| %>
<tr class="<%= cycle('dg_list_line_odd', 'dg_list_line_even') %>">
<td> <%= link_to "#{item.name}", item_path(item) %></td>
<% unless current_user.is_partner? %>
<td> <%= item.location.name %></td>
<% end %>
<td> <%= item.requested %></td>
<td><%= f.text_field :amount, :value => item.requested, :size => 1 %></td>
</tr>
<% end %>
</table>
<p> </p>
正如您所看到的,这里有一个“每个”循环,它允许显示多个项目,并希望创建多个项目。但是,当我按下提交按钮时,无论存在多少项,都只创建其中一个。
非常感谢您的建议。
答案 0 :(得分:0)
这不是您使用accepts_nested_attributes
假设f
是绑定到父对象的表单构建器,则需要执行类似
<%= f.fields_for :items do |item_form| %>
<%= item_form.text_field :amount
<% end %>
对于集合中的每个项目,将执行一次该块。此外,item_form
设置了正确的前缀,以便控制器端正常工作。