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