0

したがって、別のエンティティのネストされた属性を受け入れるエンティティ フォームがあります。これは完全にうまくレンダリングされます。ただし、ネストされたフォームは、希望どおりに機能していません。下記参照:

<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>

ご覧のとおり、ここには "each" ループがあり、複数のアイテムを表示したり、できれば作成したりできます。ただし、送信ボタンを押すと、アイテムがいくつあっても作成されるのは 1 つだけです。

あなたの提案は大歓迎です。

4

1 に答える 1

0

それはフォームをレンダリングする方法ではありませんaccepts_nested_attributes

親オブジェクトにバインドされたフォームビルダーであると仮定するfと、次のようなことをする必要があります

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

ブロックは、コレクション内のアイテムごとに 1 回実行されます。さらにitem_form、コントローラ側が適切に動作するように、適切なプレフィックスが設定されています。

于 2012-06-24T18:58:39.783 に答える