2011-01-24 45 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