2011-07-06 11 views
6

データベーステーブルの列によって並べ替え/並べ替えを行いたい(descまたはascの方法) Imは完全に混乱しています。選択したものの、collection_selectではないソリューションが見つかりましたか?Ruby on Rails:collection_selectをソートする方法

<%= f.collection_select :player1, Player.all, :id, :name %> 

は「演劇」、「目標」のようなデータベーステーブルの列もあるため/ソートする方法

を知らない私の見解のいくつかのコード...

答えて

18

実際に注文したコレクションをcollection_selectヘルパーに渡します:

collection_select(:post, :author_id, Author.order('created_at DESC'), :id, :name_with_initial, :prompt => true) 

rceの例では次のようになります。

<%= f.collection_select :player1, Player.order('plays DESC'), :id, :name %> 
+0

初心者です。コードを自分のビューに変更して動作させ、このコードをどこに追加すればいいですか?ビューでPlayer.all.order( 'created_at DESC')を試しましたが、動作しませんでしたか? –

+0

これは正しいアイデアですが、 'all'を呼び出すとSQLクエリーが実行されます(これが後で' order'を呼び出すことができない理由です)。 '.all'をチェーンの終わりに移動するか、それが暗黙のうちに完全に削除するだけです。 '<%= f.collection_select:player1、Player.order( '再生DESC')、:id、:name%>' –

関連する問題