will_paginateでソートする事実上のアプローチ
-
22-09-2019 - |
質問
私はページ区切りの形式でコレクションを表示するには、will_paginate宝石を使用しています。今、私は、ビュー内のリストの列で機能をソートしたいのですが。私はこれを確立するために独自のカスタムメカニズムを追加しましたが、それは、これを行うwill_paginateのシンプルさと優雅さを活用するための標準的な方法が存在しない場合は疑問に私を残しました。
解決
はい、それを行うためのエレガントな方法があります。 ujs_sort_helperを使用します。あなたは、より詳細ここを
見つけることができます他のヒント
searchlogic のプラグでうまくwill_paginate有する。
それはあなたのようにしている検索が聞こえるが、すべてのものを示すことは、検索のためだけの特別なケースではありません。あなただけの並べ替え機能を使用すると、あなたのデータをフィルタリングしたくない場合は、残りの部分を無視することができます。
のJavaハットのsortable_table
破ったために行きます。これは素晴らしいレールのプラグインです。本当に簡単にセットアップする。
私は両方のソートやページングを実装しました以前のプロジェクトで、私はソートを処理するためにwill_paginate
を使用しながら、overwrite_params
ハンドルにページングを聞かせてきました。
例えば(仮定テーブル)
<tr>
<th><%= link_to "ID", overwrite_params(:sort => "id", :page => 1) %></th>
<th><%= link_to "Name", overwrite_params(:sort => "name", :page => 1) %></th>
</tr>
<tr>
... information ...
</tr>
overwrite_params
が、それはあなたが値を指定で上書き既存のparamsで現在のURLをバック与える、または任意の以前に存在しない値がURLに挿入された...あなたはそれがないと思うだろうかを正確に行います。
will_paginate
はすでに(オプションである)、あなたはまた、ハンドルにそれをハッキングすることなく、overwrite_params
の恩恵を引き続き使用することを得ることを意味1にすることで、ページをリセットすると一緒に列ヘッダーにwill_paginate
を使用して、任意のURL paramsはを保存しているのであなたの並べ替えます。