未定义的方法"结果"与太阳黑子Solr搜索

ali*_*lik 10 solr full-text-search ruby-on-rails sunspot ruby-on-rails-3.1

我正在使用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...
Run Code Online (Sandbox Code Playgroud)

这是我searchable在product.rb文件中声明的方式

searchable do
    text :title
end
Run Code Online (Sandbox Code Playgroud)

但是我继续遇到以下错误

undefined method `results' for #<MetaSearch::Searches::Product:0x12a089f50>
Run Code Online (Sandbox Code Playgroud)

但是,当我只做一个时@products = @search,无论我在搜索查询中发送什么,我都会得到所有产品的完整列表

任何人都知道我做错了什么?

小智 38

您确定与其他搜索宝石没有冲突吗?我目前无法测试它,但我相当确定Sunspot不使用MetaSearch :: Searches.但是,这个宝石确实:https://github.com/ernie/meta_search/.

你试过这样做吗?

@search = Sunspot.search(Product) do
  fulltext params[:search]
end
Run Code Online (Sandbox Code Playgroud)

这样你可以确定它使用太阳黑子来搜索而不是其他一些宝石.此外,如果你需要更多搜索宝石,那么在宝石文件中将太阳黑子放在它们之上.

  • 好吧,我发现它在gemfile.lock中.显然activeadmin gem使用它.也许我应该完全摆脱活跃的管理员,如果我想要太阳黑子工作.你能推荐任何类似于activeadmin的宝石http://activeadmin.info/ (6认同)

Nic*_*zny 18

search如果类已经定义了一个类,那么太阳黑子将拒绝定义类方法.您可以使用该solr_search方法获得相同的效果.