我对Ruby,Rails和Sunspot非常陌生,更不用说Solr了!所以,请原谅我,如果这一切看起来有点'愚蠢'。
我有以下设置。
模型
class Pin < ActiveRecord::Base
belongs_to :user
has_many :replies
has_one :type
validates :user_id, presence: true
validates :type_id, presence: true
validates :title, presence: true
validates :description, presence: true
searchable do
text :title, :boost => 5
text :description
integer :type_id
end
end
控制器
def index
@search = Pin.search do
fulltext params[:keywords]
facet :type_id
end
@pins = @search.results
end
查看
<% @search.facet(:type_id).rows.each do |facet| %>
<%= puts "Type #{facet.value} has #{facet.count} pins!" %>
<% end %>
但是当我尝试在页面上查看此内容时,我得到的是:
[<Sunspot::Search::FacetRow:1 (6)>, <Sunspot::Search::FacetRow:2 (6)>]
我在这里错过了什么吗?
我希望能够输出每个引脚的可用类型。
谢谢! MIKEY
更新
所以,事实证明我应该在我看来这样做:
<% @search.facet(:type_id).rows.each do |facet| %>
<%= facet.value %>
<% end %>
现在从引脚输出类型ID。大!但是,如果此ID已连接到另一个表,其中也包含TITLE类型,我如何使用facet获取它?
因此,所有引脚都有一个与类型表相关的类型ID。我的模型设置正确,但我无法弄清楚如何做到这一点。
谢谢!
答案 0 :(得分:1)
这实际上是一个ERB问题
当你这样做时:
<%= @search.facet(:type_id).rows.each do |facet| %>
您正在输出
的结果@search.facet(:type_id).rows.each do |facet|
替换为
<% @search.facet(:type_id).rows.each do |facet| %>
(注意缺少'=')