用思维的狮身人面像刻面钻研

时间:2012-05-26 22:05:06

标签: ruby-on-rails-3 search thinking-sphinx faceted-search

我有一个应用程序,它使用思维sphinx进行搜索,我可以在视图中正确显示facet,但是链接没有返回给定选项的结果列表。这是我对模型控制器和视图的代码:

控制器:

@facets = Load.facets(
  (params[:trucks]),
  :page => (params[:page] || 1),
  :per_page => 25,
  :geo => degrees_to_radians(@location),
  :with => { "@geodist" => 0.0..miles_to_meters(params[:radius].to_i) },
  :sort_mode => :expr,
  :order => sort_by_select(params[:sort])
  )
  @results = @facets.for

模特:

define_index do 
  indexes commodity
  indexes truck_type
  has latitude, longitude
  has distance, :facet => true
  has weight, :facet => true
  has current_asking_price, :facet => true
  has created_at, :facet => true
  where sanitize_sql(["active", true])
  set_property :delta => :delayed
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>
<% end %>

如果我在“:with =&gt;”的值部分中包含构面选项,我可以得到正确的结果哈希值。但是我不确定如何配置链接以便它执行另一次搜索,并将该值插入控制器代码中。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

乍一看,它看起来像是

<li><%= link_to "#{option} (#{count})", :params => {facet => option, :page => 1}</li>

应改为阅读

<li><%= link_to "#{option} (#{count})", :params => {:facet => option, :page => 1} %></li>

通过以下更改:

  • <%=没有结束标记
  • :params哈希在:
  • 之前缺少符号标识facet

但是我不确定这是否能回答你的问题。

听起来你需要做以下事情:

  1. 将Thinking Sphinx参数嵌入link_to标记。
  2. 在控制器中,使用逻辑来处理参数,然后将它们添加到:with哈希。
  3. 逻辑可能包括错误检查,格式化,验证,等等