Fields_for设置表单不能正确地使用accepts_nested_attributes



我相信这只是我缺乏经验,所以请原谅我。

我有一个模型MenuItem,它有一个Price。不同的项目类型(menu_items、products、events)可以有价格。

我已经设置如下:

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对象在Mysql5上有一个十进制(8,2)的Price值。

In my form:

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

我如何遍历以获得price值?我的模型设置的方式是否意味着这些menu_items在默认情况下会有一个与它们相关的价格记录(甚至是空/null值)?

thx

你需要fields_for :price,而不是item.fields_for

要获得更完整的示例,请查看此处的模式

如果你选择

,你可以在before_save回调中明确地给它们一个null值,否则所有菜单项的price值都为null

相关内容

  • 没有找到相关文章

最新更新