Я пытаюсь отредактировать вложенные атрибуты модели, например, контур здесь , реплицированный здесь:
<%= 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, он создает входные данные, которые выглядят следующим образом, не может ввести правильный идентификатор и вместо этого размещает представление памяти (?) Модели.В результате происходит сбой обновления:
<input type="text" value="2" size="30" name="meal[meal_line_item][#<MealLineItem:0x00000005c5d618>][servings]" id="meal_meal_line_item_#<MealLineItem:0x00000005c5d618>_servings">
РЕДАКТИРОВАТЬ: Причина, по которой я пытаюсь сделать это в этом методе, заключается в том, что мне нужно собрать некоторую информацию об ассоциациях для существующей еды_line_items,Например, в области, где я вынул код, у меня есть некоторый код с эффектом:
<%= subitem.food.name %>
<%= subitem.food.calories %>
Получение этой информации не будет работать, если я использую конструктор форм, по крайней мере,не в моих испытаниях.
Редактировать 2: * См. редактирование в коде.Вот мой MealLineItem
class MealLineItem < ActiveRecord::Base
# Associations ---------------------
belongs_to :food
belongs_to :meal
end
И еда accept_nested_attributes для модели.Как видите, это относится как к еде, так и к модели еды.Для существующего food_line_item мне нужно сделать что-то вроде:
meal_line_item.food.name