2009-04-06 18 views
6

Railsアプリケーションのビューファイルからエンドユーザにモデルの "find"によって返される結果セットのソート順を設定する最良の方法を提案します。方法。つまり、ユーザーが選択リストからソート順を選択できるようにしたいと思います。エンドユーザがRailsでソート順を指定する最良の方法

最初は、:orderパラメータに入れたい文字列を入れることができると思っていましたが、セキュリティの観点からは悪い考えです。

私はいつもセレクションリストの値に基づいてスイッチを使うことができると思いますが、それはちょっと大きめです。

ありがとうございます。

答えて

4

私はAR :: Base#column_namesを使用して入力をサニタイズします。ような何か:

@models = Model.find(:all, :order => params[:sort].select({|name| Model.column_names.include? (name) }).join(',')) 

あなたが昇順または各キーに降順でソートするかどうかを変化させるために、少し前処理で、これを拡張することができます。お役に立てれば!

+0

ニフティをコピーすることができ、ありがとうございました:) – jklina

2

これはあなたが探しているものの外にあるかもしれませんが、最近、私はその後の並べ替えのためにJavaScriptを使用しています。プロトタイプ用の優れたテーブルソーターはTablekit(http://www.millstream.com.au/view/code/tablekit)です。控えめで、速く、使いやすいです。また、場所の編集や列のサイズ変更などの細かい点も含まれています。

0

何かレールはCakePHPの足場から(CakePHPではインデックス()のページネータソーター)

+0

この答えは少しまばらである...あなたは少し手の込んだだろうか? –