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に感謝します)

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

外部サービス/デーモンに依存しない ActiveRecord ベースのフィルタリングとファセット計算用の gem を作成しました: https://github.com/fortytools/forty_facets

于 2014-06-04T12:18:55.137 に答える
0

完全にはお答えできませんが、この「フォーム」または ajax による部分的な更新を検討することをお勧めします。Ryan は railscast 43 を持っていて、それがどのように機能するかについていくつかのアイデアを提供しますが、jquery と rails3 ですべての凝ったことを行う方法を調べることができます。

于 2011-01-24T14:36:20.813 に答える