0

我有一个使用太阳黑子的 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 为空,但是当我打印出来时,@product_type.id它被设置为一个值。

感谢大家的帮助!

4

1 回答 1

0

这是因为您的@product_type 实例变量从未被定义(至少我在索引操作中没有看到它,它也可能在 before_filter 中定义),所以它为零。

于 2013-10-12T18:54:29.570 回答