0

私はこのように構築されたフォームを持っています:

<%= form_for @location do |f| %>
<%= f.fields_for :product_dates do |d| %>
<%= d.fields_for :products |p| %>
<%= p.text_field :tag_list,"data-pre" => @product.tags.map(&:attributes).to_json %>

このページに移動すると、その行を使用するとエラーが発生します。"data-pre" => @product.tags.map(&:attributes).to_json これはundefined method tags for nil:NilClass、削除するとすべて問題ありません。このある種のTokenInputバグ?他の誰かがこれに対処しなければなりませんでしたか?

ProductsController:

def new
    @location = Location.new
    product_date = @location.product_dates.build
    product_date.products.build
end
4

1 に答える 1

2

変数を設定しなかっただけ@productです => それはnil.

コントローラーを表示する必要があります

編集:

交換:

<%= p.text_field :tag_list,"data-pre" => @product.tags.map(&:attributes).to_json %>

と:

<%= p.text_field :tag_list,"data-pre" => p.object.tags.map(&:attributes).to_json %>

editこれも同様に機能するはずです。

これは非常に理にかなっています。設定していないものを呼び出すことはできません。

于 2011-07-17T07:38:14.637 に答える