0

工作,我有这是建立这样的形式:jQuery的Tokeninput和行为-AS-加标签不与亲子子女嵌套形式

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

回答

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正常工作。

这里真的很有意义:你不能调用你没有设置的东西。

+0

好吧,我用控制器更新了我的问题。以前,当我只有位置和产品(无产品日期模型)的关联时,才能使嵌套表单起作用。 – LearningRoR

+0

有趣的是,当我按照你所说的去做时,它开始工作;我将@product = Product.new放在新操作的内部。谢谢。 – LearningRoR