モデルのネストされた属性を編集しようとしています。ここで概要を説明し、ここで複製します。
<%= form_for @person do |person_form| %>
<%= person_form.text_field :name %>
<% for address in @person.addresses %>
<%= person_form.fields_for address, :index => address do |address_form|%>
<%= address_form.text_field :city %>
<% end %>
<% end %>
<% end %>
私のコードには、次のものがあります。
<%= form_for(@meal) do |f| %>
<!-- some other stuff that's irrelevant... -->
<% for subitem in @meal.meal_line_items %>
<!-- # Edit 2: I need to display information here about the subitem
Which I can't find a way to pass it to the partial, or work in
this manner for existing items
-->
<%= subitem.food.name %>
<%= subitem.food.calories %>
<%= f.fields_for subitem, :index => subitem do |line_item_form| %>
<%= line_item_form.label :servings %><br/>
<%= line_item_form.text_field :servings %><br/>
<%= line_item_form.label :food_id %><br/>
<%= line_item_form.text_field :food_id %><br/>
<% end %>
<% end %>
<%= f.submit %>
<% end %>
これはうまく機能しますが、HTML を見ると、次のような入力が作成され、正しい ID の入力に失敗し、代わりにモデルのメモリ表現 (?) が配置されます。その結果、更新は失敗します。
<input type="text" value="2" size="30" name="meal[meal_line_item][#<MealLineItem:0x00000005c5d618>][servings]" id="meal_meal_line_item_#<MealLineItem:0x00000005c5d618>_servings">
編集: このメソッドでそれを実行しようとしている理由は、既存の食事ライン項目の関連付けに関する情報を収集する必要があるためです。たとえば、コードを取り出した領域には、次のようなコードがあります。
<%= subitem.food.name %>
<%= subitem.food.calories %>
少なくとも私の試行では、パーシャルを含むフォームビルダーを使用している場合、この情報を取得することはできません。
編集 2:* コード内の編集を参照してください。これが私のMealLineItemです
class MealLineItem < ActiveRecord::Base
# Associations ---------------------
belongs_to :food
belongs_to :meal
end
そして、モデルの食事accepts_nested_attributes。ご覧のとおり、食品モデルと食事モデルの両方に属しています。既存の food_line_item については、次のようにする必要があります。
meal_line_item.food.name