Вложенные атрибуты Rails не вставляют ID правильно - PullRequest
1 голос
/ 05 января 2011

Я пытаюсь отредактировать вложенные атрибуты модели, например, контур здесь , реплицированный здесь:

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

Ответы [ 3 ]

3 голосов
/ 05 января 2011

Есть ли f. отсутствует в <%= fields_for?

- редактирование

Вы пробовали:

<%= f.fields_for 'meal[meal_line_item][]', subitem do |line_item_form| %>

- редактирование

Документы говорят, что он должен работать и без цикла:

<%= 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 %>
1 голос
/ 05 января 2011

Нужно проверить это, но, может быть, этот подход?

_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 (хотя в Rails 2.3.8). Связи между Вспышкой -> Инциденты -> Местонахождение должны быть аналогичны тем, которые указаны для Еды -> Meal_line_items -> Еда.

AJAX-обновление accepts_nested_attributes_for partials

0 голосов
/ 05 января 2011

После поиска высокого и низкого я обнаружил ошибку. Хотя я модифицировал частичное и получал NameError, это потому, что я вызывал частичное из вспомогательного метода - точно такая же проблема, как указано в следующем вопросе:

rails fields_for частичное рендеринг с несколькими местными жителями, создающими неопределенную переменную

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...