Undefined метод "результаты" с помощью Sunspot Solr Search
Я использую Rails 3.1 и использую этот учебник по railscast для реализации sunspot. Я слежу за всем правильным (я думаю), однако, когда я запускаю поиск следующим образом:
class ProductsController < ApplicationController
# GET /products
# GET /products.xml
def index
@search = Product.search do
fulltext params[:search]
end
@products = @search.results
respond_to do |format|
format.html
format.xml { render :xml => @products }
end
end...
Вот как я объявил searchable
в файле product.rb
searchable do
text :title
end
Однако я продолжаю работать со следующей ошибкой
undefined method `results' for #<MetaSearch::Searches::Product:0x12a089f50>
Но когда я делаю только @products = @search
, я получаю полный список всех продуктов, независимо от того, что я отправляю в поисковом запросе
Кто-нибудь знает, что я делаю неправильно?
Ответы
Ответ 1
Вы уверены, что нет конфликтов с другими камнями поиска? Я не могу проверить это на данный момент, но я уверен, что Sunspot не использует MetaSearch:: Searches. Однако этот драгоценный камень делает: https://github.com/ernie/meta_search/.
Вы пытались сделать это вместо этого?
@search = Sunspot.search(Product) do
fulltext params[:search]
end
Таким образом, вы можете быть уверены, что он использует Sunspot для поиска, а не для какого-либо другого драгоценного камня. Также, если вам нужно больше искать драгоценные камни, тогда установите Sunspot над ними в gemfile.
Ответ 2
Sunspot откажется определять метод класса search
, если класс уже имеет один определенный. Вместо этого вы можете использовать метод solr_search
для того же эффекта.
Ответ 3
Спасибо Ник Задрозный,
Сегодня наша команда дебатирует из-за этой проблемы.
Основная причина проблемы заключается в том, что мы добавили Active admin.
Нам пришлось изменить все ".search" на ".solr_search"
Ответ 4
В моем случае был тег rails формы, он не @Class_form, он <% form_tag posts_path, :method => :get %>