2011-01-24 47 views
3

用户可以通过设置复选框(例如,Rails 3:预测过滤(分面导航)

Colour 
[] Red 
[] Green 
[] Blue  

Shape 
[] Round 
[] Square 

Size 
[] Small 
[] Medium 
[] Large 

点击复选框触发该追加where条件于该查询,例如AJAX请求

@mymodel = MyModel.scoped 
@mymodel = @mymodel.where(:colour => params[:colour]) if params[:colour] 
... 

我想现在要做的就是每个复选框,表示有多少结果,如果选择了给定的复选框,将显示后添加数。例如

Colour 
[] Red (148) 
[] Green (121) 
[] Blue (136) 
... 

一旦点击复选框,计数旁边的所有复选框应该被刷新,并且属于零结果选项将不显示。这需要跨所有过滤器类别工作,例如,如果数据库中没有小的和红色的,“小”选项应该在选择“红色”时消失,并在取消选择时重新出现。

实现这种预测滤波的最佳方式是什么?

非常感谢。

更新
更具体地说,我的问题是:什么是落实在Rails的面导航的最佳方式?
(谢谢@Pasta用于识别这个术语)

回答

6

有相当多的开源搜索引擎会给你多面搜索。我们使用Thinking Sphinx,并且对此非常满意。看起来他们对Rails 3有初步的支持,但它可能值得一试。该facet syntax相当简单:

例子:

# This will return any search results for 'pancakes' 
Article.search 'pancakes' 

# This will return any facets for 'pancakes' 
Article.facets 'pancakes' 

你可能也想看看SolrFerret - 这两个我认为支持面搜索。

+0

谢谢。思维狮身人面像似乎提供了我正在寻找的东西。 – gjb 2011-01-24 17:18:38

4

看看faceted search

干杯;

+0

谢谢,我知道一定是这种类型的过滤术语。 – gjb 2011-01-24 14:44:23

0

虽然我不能完全回答,但我建议你看看更新这个“表格”或部分通过ajax。 Ryan有一个railscast 43会给你一些关于它如何工作的想法,但是你可以研究如何用jQuery和rails3做所有的花哨的东西。

+0

谢谢。部分表单已经使用AJAX进行更新。我的问题是如何首先获取过滤器数量。 – gjb 2011-01-24 14:43:32