我正在使用Solr搜索两个模型:
@query = Sunspot.search Location, Employee do
with(:category_id, params[:category_id]) if params[:category_id].present?
fulltext params[:search]
facet :category_id
order_by(:weight, :desc)
paginate :page => params[:page], :per_page => 10
end
我想从结果中创建两个离散对象,包含两个模型的匹配,以便我可以在UI中将它们拆分。
我现在正在做:
@results = @query.results.group_by(&:class)
@locations = @results[Location]
@employees = @results[Employee]
但那不起作用。 @locations
和@employees
都是空的。我在这里错过了什么?如果我调试@results,我看到匹配,它们已经按模型分组。我只想将它暴露给我的视图,这样我就可以将结果拆分为可隐藏/可显示的容器。想法?
答案 0 :(得分:1)
我没有solr,所以我不能完全假设@results的样子(我认为它是一个哈希)。
根据这个假设,哈希键是符号或字符串。
所以试试
@locations = @results[:Location]
@employees = @results[:Employee]
或
@locations = @results["Location"]
@employees = @results["Employee"]
其中一个(可能是第一个)应该在每个实例变量中提供信息。原因是ruby会将类名的哈希键设置为符号。如果名称已经是字符串,则键将是字符串。