Plural for fields_for has_many association not showing in view

杀马特。学长 韩版系。学妹 提交于 2019-12-07 06:52:00

问题


Currently, an Item belongs_to a Company and has_many ItemVariants.

I'm trying to use nested fields_for to add ItemVariant fields through the Item form, however using :item_variants does not display the form. It is only displayed when I use the singular.

I have check my associations and they seem to be correct, could it possibly have something to do with item being nested under Company, or am I missing something else?

Thanks in advance.

Note: Irrelevant code has been omitted from the snippets below.

EDIT: Don't know if this is relevant, but I'm using CanCan for Authentication.

routes.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 %>

回答1:


You should prepopulate @item.item_variants with some data:

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

Source: http://rubysource.com/complex-rails-forms-with-nested-attributes/




回答2:


try this way

in your item controller new action write

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

and in item/new.html.erb

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

for more see video - Nested Model Form



来源:https://stackoverflow.com/questions/12987967/plural-for-fields-for-has-many-association-not-showing-in-view

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!