フォームヘルパのcollection_selectとselectどちらを使うか悩んだ

環境

ruby 1.9.3p194
Rails 3.2.3

DBにあるレコードをセレクトボックスに出力したいと思って調べた時の備忘録。
select要素を出力するには以下のフォームヘルパメソッドを使える。

  • select
  • collection_select

selct

"選択ボックスを生成。"
select要素を作るだけっぽい。

collection_select

"データベースの情報を元に選択しを生成。"
モデルのインスタンスを受け取ることが前提のヘルパっぽい。

sample

DBのレコードをセレクトボックスに出力すると以下のコードになる。

collection_select
<%= f.collection_select :category_id, @categories, :id, :name  %>
<%= f.collection_select :category_id, Category.all, :id, :name  %>
select
<%= f.select :category_id, @categories.map {|u| [u.name , u.id] } %>

結論

DBにあるレコードをセレクトボックスに出力するなら、collection_select使った方が簡潔。