У меня есть приложение для рельсов 4, которое использует солнечное пятно. Вот мой контроллер:Неопределенный метод для nil: NilClass Issue
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
, он установлен в значение.
Спасибо за помощь!
Точно, где в 'index' вы проверяли, что значение' @ product_type.id' не 'nil'? – lurker
@mbratch, на index.html.haml, я просто положил это на страницу: '% h1 = @ product_type.id' и распечатал 3 (это был идентификатор для этой коллекции) –