Railsselect()
フォーム ヘルパーを使用して<select>
構造を生成しています。次の行は機能しますが、ソートされていないリストになります。並べ替え順序をアルファベットの昇順に変更するにはどうすればよいですか?
<%= select('category', 'name', Category.all.collect { |category| [ category.name ] }) %>
Railsselect()
フォーム ヘルパーを使用して<select>
構造を生成しています。次の行は機能しますが、ソートされていないリストになります。並べ替え順序をアルファベットの昇順に変更するにはどうすればよいですか?
<%= select('category', 'name', Category.all.collect { |category| [ category.name ] }) %>
Rails 3 の方法を使用する必要があります。
<%= select('category', 'id',
Category.order('name ASC').all.map{ |c| [c.name, c.id] }) %>
これにより、次のような各カテゴリの HTML オプションが生成されます。
<option value="1">CategoryName</option>
値は名前ではなくカテゴリ ID です。
params[:category_id]
which の代わりにparams[:category]
、カテゴリ名を含む文字列を取得します。次に、DB でカテゴリを見つけるには、ID を使用する方がはるかに優れており (それらは名前とは異なり、一意であるため)、高速です!