0

これは私の経験不足に過ぎないと思いますので、ご容赦ください。

Price を持つモデル 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 オブジェクトには、Mysql5 では 10 進数 (8,2) の価格値があります。

私のフォームでは:

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

<%終了%>

次のエラーが表示されます。

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

価格値を取得するためにどのように反復しますか? 私のモデルが設定されている方法は、それらの menu_items にデフォルトで関連付けられた価格レコードがあることを意味しますか (空/null 値でも)?

どうも

4

1 に答える 1

3

必要ありfields_for :priceませんitem.fields_for

より完全な例については、こちらのパターンをご覧ください

選択した場合に before_save コールバックで実行できるものを明示的に指定しない限り、すべてのメニュー項目の価格は null 値になります。

于 2011-10-05T19:22:28.100 に答える