我有一个使用太阳黑子的rails 4应用程序。这是我的控制器:
before_action :set_product_type
def index
if params[:search].present?
@search = Product.search do
fulltext params[:search]
with(:product_type_id, @product_type.id)
end
@products = @search.results
else
@products = Product.all.where(:product_type_id => @product_type.id)
end
end
private
def set_product_type
@product_type = Product_type.find(params[:product_type_id])
end
这是我的模特:
searchable do
text :data
integer :product_type_id
end
当我使用它时,我得到:
undefined method `id' for nil:NilClass
但是当我使用静态值时:
with(:product_type_id, 3)
它工作正常。
我认为可能是因为@ product_type.id为null,但是当我打印出@product_type.id
时,它被设置为一个值。
感谢您的帮助!
答案 0 :(得分:0)
这是因为你的@product_type实例变量从未被定义过(至少我没有在索引动作中看到它,如果在before_filter中也可能被定义),所以它是零。