3

用户当前可以通过设置复选框将过滤器应用于数据库查询,例如

Colour
[] Red
[] Green
[] Blue    

Shape
[] Round
[] Square

Size
[] Small
[] Medium
[] Large

单击复选框会触发 AJAX 请求,该请求将where条件附加到查询中,例如

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

我现在想做的是在每个复选框之后添加一个计数,以指示如果选中给定的复选框将显示多少个结果。例如

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

单击复选框后,应刷新所有复选框旁边的计数,并且不会显示与零结果有关的选项。这需要适用于所有过滤器类别,因此,例如,如果数据库中没有任何小的和红色的东西,则选择“红色”时“小”选项应该消失,并在取消选择时重新出现。

实现这种预测过滤的最佳方法是什么?

非常感谢。

更新
更具体地说,我的问题是:在 Rails 中实现分面导航的最佳方法是什么?
(感谢@Pasta 确定这个术语)

4

4 回答 4

6

有很多开源搜索引擎可以为您提供多面搜索。我们使用Thinking Sphinx并且对它非常满意。看起来他们已经初步支持 Rails 3,但可能值得一试。构面语法相当简单:

例子:

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

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

您可能还想看看SolrFerret——我相信它们都支持分面搜索。

于 2011-01-24T15:48:09.850 回答
4

看看分面搜索

干杯;

于 2011-01-24T14:32:53.437 回答
0

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

于 2011-01-24T14:36:20.813 回答
0

我为基于 ActiveRecord 的过滤和方面计算编写了一个 gem,它不依赖于外部服务/守护进程:https ://github.com/fortytools/forty_facets

于 2014-06-04T12:18:55.137 回答