我正在使用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
时,无论我在搜索查询中发送什么,我都会得到所有产品的完整列表
任何人都知道我做错了什么?
答案 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 %>