我已经为这样的产品模型定义了facets:
product_index.erb
ThinkingSphinx::Index.define :product, :with => :active_record do
indexes publish
indexes name, :sortable => true
indexes price, :sortable => true
indexes manufacturer.permalink, :as => :manufacturer, :facet => true
has manufacturer_id
end
和视角:
<% @facets.each do |facet, facet_options| %>
<h5><%= facet %></h5>
<ul>
<% facet_options.each do |option, count| %>
<li><%= link_to "#{option} (#{count})",
:params => {facet => option, :page => 1} %></li>
<% end %>
</ul>
这为像这样的制造商生成方面:
制造商
如何为标题添加自己的名称(例如,将制造商替换为品牌)并为链接添加自己的名称(例如,将manufacturer-permalink(53)替换为Manufacturer.name( 53)(制造商是模型类))
答案 0 :(得分:0)
我为此目的写了一些东西 - 将外键方面转换为相应的对象。您可以在此处找到代码:https://gist.github.com/pat/5477820
您需要明确要迭代的方面 - 否则您将最终使用HTML中列出的manufacturer_id和制造商。
在构面搜索查询之后,这是控制器动作可能出现的情况:
FacetExpander.expand @facets, :manufacturer
然后在你看来:
<h5>Manufacturers</h5>
<ul>
<% @facets[:manufacturers].each do |manufacturer, count| %>
<li><%= link_to "#{manufacturer.name} (#{count})",
:params => {:manufacturer_id => manufacturer.id, :page => 1} %></li>
<% end %>
</ul>