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

时间:2011-10-28 06:09:04

标签: ruby-on-rails solr full-text-search ruby-on-rails-3.1 sunspot

我正在使用Rails 3.1并且一直使用this railscast tutorial来实现太阳黑子。我正在关注一切(我认为),但是当我按照这样的方式进行搜索时:

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

以下是我在product.rb文件中声明searchable的方法

searchable do
    text :title
end

但是我继续遇到以下错误

undefined method `results' for #<MetaSearch::Searches::Product:0x12a089f50>

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

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

4 个答案:

答案 0 :(得分:38)

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

您是否尝试过这样做?

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

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

答案 1 :(得分:18)

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

答案 2 :(得分:1)

谢谢Nick Zadrozny,

由于这个问题,我们今天的团队辩论。

问题的根本原因是我们添加了Active admin。

我们必须将所有“.search”更改为“.solr_search”

答案 3 :(得分:0)

在我的情况下是表单的rails标记,它不是 @Class_form ,它是<% form_tag posts_path, :method => :get %>