我正在尝试编辑模型的嵌套属性,就像此处的大纲一样,在此处复制:
<%= 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">
编辑: 我试图在这种方法中这样做的原因是我需要收集一些关于现有meal_line_items 关联的信息。例如,在我取出代码的区域,我有一些代码的效果是:
<%= subitem.food.name %>
<%= subitem.food.calories %>
如果我使用带有部分的表单生成器,至少在我的试验中不会,获取此信息将不起作用。
编辑 2:* 请参阅代码中的编辑。这是我的 MealLineItem
class MealLineItem < ActiveRecord::Base
# Associations ---------------------
belongs_to :food
belongs_to :meal
end
并为模型吃接受嵌套的属性。如您所见,它属于食物和膳食模型。对于现有的 meal_line_item 我需要执行以下操作:
meal_line_item.food.name