5

現在、アイテム会社に属し、 has_manyのItemVariantsを持っています。

ネストされた fields_for を使用して Item フォームから ItemVariant フィールドを追加しようとしていますが、:item_variants を使用してもフォームが表示されません。単数形を使用した場合にのみ表示されます。

関連付けを確認しましたが、それらは正しいようです。それは、Company の下にネストされているアイテムと関係がある可能性がありますか、それとも他に何か不足していますか?

前もって感謝します。

注: 以下のスニペットでは、無関係なコードが省略されています。

編集:これが関連しているかどうかはわかりませんが、認証に CanCan を使用しています。

ルート.rb

resources :companies do
  resources :items
end

item.rb

class Item < ActiveRecord::Base
  attr_accessible :name, :sku, :item_type, :comments, :item_variants_attributes


  # Associations
  #-----------------------------------------------------------------------
  belongs_to :company
  belongs_to :item_type
  has_many   :item_variants

  accepts_nested_attributes_for :item_variants, allow_destroy: true

end

item_variant.rb

class ItemVariant < ActiveRecord::Base
  attr_accessible :item_id, :location_id

  # Associations
  #-----------------------------------------------------------------------
  belongs_to :item

end

item/new.html.erb

<%= form_for [@company, @item] do |f| %>
  ...
  ...
  <%= f.fields_for :item_variants do |builder| %>
    <fieldset>
      <%= builder.label :location_id %>
      <%= builder.collection_select :location_id, @company.locations.order(:name), :id, :name, :include_blank => true %>
    </fieldset>
  <% end %>
  ...
  ...
<% end %>
4

2 に答える 2

7

@item.item_variantsいくつかのデータを事前入力する必要があります。

def new # in the ItemController
  ...
  @item = Item.new
  3.times { @item.item_variants.build }
  ...
end

ソース: http: //rubysource.com/complex-rails-forms-with-nested-attributes/

于 2012-10-20T12:22:04.660 に答える
2

この方法を試してください

あなたのitem controller new action 書き込みで

def new
  ...
    @item = # define item here
    @item.item_variants.build if @item.item_variants.nil?
  ...
end

とでitem/new.html.erb

<%= form_for @item do |f| %>
  ...
  ...
  <%= f.fields_for :item_variants do |builder| %>
    ...
  <% end %>
  ...
  ...
<% end %>

詳細については、ビデオを参照してください-ネストされたモデルフォーム

于 2012-10-20T12:20:43.320 に答える