Поля для настройки формы не работают правильно с acceptpts_nested_attributes - PullRequest
0 голосов
/ 05 октября 2011

Я уверен, что это просто недостаток опыта с моей стороны, так что терпите меня.

У меня есть модель MenuItem, которая имеет цену.Различные типы элементов (menu_items, продукты, события) могут иметь цены.

Я настроил его следующим образом:

class MenuItem < ActiveRecord::Base
   ...
   has_one :price, :as => :pricable
   accepts_nested_attributes_for :price
   attr_accessible :price_attributes
   ...
end

class Price < ActiveRecord::Base
   belongs_to :pricable, :polymorphic => true
end

У объекта Price есть значение цены, которое является десятичным (8,2) для Mysql5.

В моемФорма:

<%= form_tag "/menus/save" do %>
...
<% menu_header_form.menu_items.each do |item| %>
   <div><%=item['header'] %></div>
   <%=text_field :menu_item, :header, :index=>item.id, :value=>item.header %>
   <%=text_field :menu_item, :sort, :index=>item.id, :value=>item.sort, :size => 2 %>
   <% item.fields_for :price do |menu_item_price| %>
        <%= menu_item_price.text_field :price %>
   <% end %>

<% end%>

, и я получаю следующую ошибку:

undefined method `fields_for' for #<MenuItem:0x007fec8d9be138> 

Как мне выполнить итерацию для получения значения цены?Означает ли способ настройки моих моделей, что эти menu_items будут иметь ценовую запись, связанную с ними по умолчанию (даже пустые / нулевые значения)?

thx

1 Ответ

3 голосов
/ 05 октября 2011

вам нужно fields_for :price, а не item.fields_for

для более полного примера, посмотрите на образец здесь

Все пункты меню будут иметь нулевое значение для цены, если вы явно не дадите им значение, которое вы могли бы сделать в обратном вызове before_save, если вы выбрали

...