2016-04-05 16 views
0

別のモデルのネストされた属性を受け入れるフォームを作成しようとしています。しかし、コントローラの新機能で、私は、@ item.item_type.buildを実行すると、これはitems_controllerレール定義されていないメソッド `build 'for nil:NilClass

def new 
    @item = Item.new 
    @item_gallery = @item.item_galleries.build 
    @item_type = @item.item_type.build 
    end 

のparamsの新機能です。このエラー

undefined method `build' for nil:NilClass 

を取得しています:

def item_params 
    params.require(:item).permit(:title, :price, :description, item_galleries_attributes: [:id, :item_id, :image], item_type_attributes: [:id, :type, :item_id]) 
end 

とitem.rb(モデル)ファイル内:

has_many :item_galleries, dependent: :destroy 
    has_one :item_type 
    accepts_nested_attributes_for :item_galleries 
    accepts_nested_attributes_for :item_type 

私は基本的にフォームのドロップダウンから項目の種類を設定しようとしています。

例:

<%= f.fields_for :item_types do |t| %> 
    <%= t.label :type %> 
    <%= t.select :type, options_for_select(["Type1", "Type2", "Type3"]), prompt: "Select One" %> 
<% end %> 

アイデアは、最終的にassociation.build方法とは対照的に、あなたはbuild_associationメソッドを使用するにhas_oneアソシエーションではITEM_TYPE

答えて

関連する問題