неопределенный метод "результаты" с Sunspot Solr Search - PullRequest
10 голосов
/ 28 октября 2011

Я использую Rails 3.1 и использую это руководство по Railscast для реализации солнечного пятна. Я следую все правильно (я думаю), однако, когда я запускаю поиск так:

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, я получаю полный список всех продуктов, независимо от того, что я посылаю в поисковом запросе

Кто-нибудь знает, что я делаю не так?

Ответы [ 4 ]

38 голосов
/ 28 октября 2011

Вы уверены, что нет конфликтов с другими поисковыми камнями? Я не могу проверить это в данный момент, но я уверен, что Sunspot не использует MetaSearch :: Searches. Тем не менее, этот драгоценный камень делает: https://github.com/ernie/meta_search/.

Вы пытались сделать это вместо этого?

@search = Sunspot.search(Product) do
  fulltext params[:search]
end

Таким образом, вы можете быть уверены, что он использует Sunspot для поиска, а не какой-то другой драгоценный камень. Также, если вам нужно больше поисковых камней, поместите Sunspot над ними в файле gemfile.

18 голосов
/ 01 ноября 2011

Sunspot откажется определять метод класса search, если класс уже определил его. Вместо этого вы можете использовать метод solr_search для того же эффекта.

1 голос
/ 07 июня 2012

Спасибо, Ник Задрозный,

Наша команда сегодня обсуждает эту проблему.

Основной причиной проблемы является то, что мы добавили Active admin.

Нам пришлось изменить все ".search" на ".solr_search"

0 голосов
/ 28 марта 2014

В моем случае это был тег rails формы, это не @ Class_form , это <% form_tag posts_path, :method => :get %>

...