Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 尝试使用sunspot on Rails在对象类型上实现facet_Ruby On Rails 3_Sunspot Rails - Fatal编程技术网

Ruby on rails 3 尝试使用sunspot on Rails在对象类型上实现facet

Ruby on rails 3 尝试使用sunspot on Rails在对象类型上实现facet,ruby-on-rails-3,sunspot-rails,Ruby On Rails 3,Sunspot Rails,我的基本目标是基于返回的对象类型创建一个方面,而不是基于各种对象的任何特定字段。 我的控制器中有一个搜索,返回多种类型的对象。看起来是这样的: def search @raw_results = Sunspot.search ProductReview, Vendor, Product do |query| query.fulltext(params[:search]) query.facet(:class) query.with(:class, params[:it

我的基本目标是基于返回的对象类型创建一个方面,而不是基于各种对象的任何特定字段。 我的控制器中有一个搜索,返回多种类型的对象。看起来是这样的:

def search
  @raw_results = Sunspot.search ProductReview, Vendor, Product do |query|
    query.fulltext(params[:search])
    query.facet(:class)
    query.with(:class, params[:item_type]) if params[:item_type].present?
  end
  @returned_items = @raw_results.results
end
如果我用/search?search=note调用此控制器,我将返回正确的项目和正确的面列表

我添加了
查询。使用(:class,params[:item_type])
行,现在如果调用链接/search?item_type=ProductReview&search=notes,我会得到错误:

“ProductReview”的未定义方法“name”:字符串


有没有更直接的方法在对象类型上创建方面?如果没有,那我做错了什么呢?

没有什么比睡个好半个晚上更好的了。也许有一种更优雅的方式,但这很有效

我将一个新方法(
class\u name
)添加到我想要索引的每个模型中:

def class_name
  self.class.name
end
(实际上,我将其放入一个名为
SharedMethods
的模块中,并将
SharedMethods
包含在每个模型中。)

在每个模型的
可搜索
块中,我添加了:

searchable do
  string :class_name
end
然后在设置方面时只引用
:class_name
。成功了