Rails的嵌套属性不会插入正确的ID
我试图编辑模型的嵌套属性,多为轮廓here,在这里复制:Rails的嵌套属性不会插入正确的ID
<%= 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
并为模型的用餐accep_nested_attributes。正如你可以看到它属于食物和膳食模型。对于现有meal_line_item我需要做的是这样的:
meal_line_item.food.name
寻找高和低后,我发现了错误。虽然我修改的部分,并接收NameError这是因为我在呼唤,从一个辅助方法的部分 - 也就是在以下问题表示了同样的问题:
rails fields_for render partial with multiple locals producing undefined variable
有f.
从<%= fields_for
失踪?
--edit
你试过:
<%= f.fields_for 'meal[meal_line_item][]', subitem do |line_item_form| %>
--edit
文件说,它应该不循环工作太:
<%= form_for(@meal) do |f| %>
<!-- some other stuff that's irrelevant... -->
<%= f.fields_for :meal_line_items 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 %>
<%= f.submit %>
<% end %>
一定要考这个但也许这种方法?
_form
<%= form.fields_for :meal_line_items do |meal_line_item_form| %>
<% @meal.meal_line_items.each do |meal_line_item| %>
<%= render :partial => "meal_line_items/meal_line_item", :locals => { :meal_line_item_form => meal_line_item_form, :meal_line_item => meal_line_item } %>
<% end %>
<% end %>
meal_line_items/_meal_line_item.erb
<%= meal_line_item_form.label :servings %><br/>
<%= meal_line_item_form.text_field :servings %><br/>
<%= meal_line_item_form.label :food_id %><br/>
<%= meal_line_item_form.text_field :food_id %><br/>
EDIT
这里是一个链接到一个例如用于直接设置formbuilder迭代器(滑轨2.3.8虽然) 。爆发 - >事件 - >位置之间的关联应该类似于Meal - > Meal_line_items - > Food。
如果我照你说的做,当我尝试使用来自meal_line_item的信息时,我得到一个NameError,其中有一个未定义的局部变量,尽管传入的局部变量的名称与局部变量。 – MunkiPhD 2011-01-05 15:42:29
这些模型有这种关联?抱歉格式化...用餐has_many:meal_line_items accep_nested_attributes_for:meal_line_item :::::: Meal_line_item belongs_to:用餐 – Pasted 2011-01-05 15:58:11
是的,但是meal_line_item也属于食物。所以当我想通过该餐点项目上的关联来查看食品时,我无法在部分内容中使用该功能。也许我错误地传递了这些变量,但是你发布的代码对我来说并不适用于当地人,也没有任何其他我尝试过的方法。 – MunkiPhD 2011-01-05 16:01:52
我错过复制F。当复制代码从尝试不同的东西:( – MunkiPhD 2011-01-05 12:30:47
好吧,所以它没有解决问题? – Heikki 2011-01-05 12:31:47
没有。作为参考,没有f。输入本质上并没有说明他们是'餐'的一部分,并且以下面的id结尾:__mealLineItem:0x00000005c5d618> _servings – MunkiPhD 2011-01-05 12:47:22