Rails:FormOptionsHelperを使う その2

データベースから値を持ってきて表示する。

select("list", "category", Hogehoge.find_all.collect{|i| [ i.category, i.id ] }, {:include_blank => true})

Hogehogeテーブルにあるデータ全部表示することになる。

Hogehoge.find_all.collect{|i| [ i.category, i.id ] }

i.categoryが表示され、i.idがvalueになる

<select id="list_category" name="list[category]">
<option value=""></option>
<option value="1">aaaa</option>
<option value="2">bbbbb</option></select>

つまりvalueを表示名と同じにしたければ

Hogehoge.find_all.collect{|i| [ i.category, i.category ] }

こうすると

<select id="list_category" name="list[category]">
<option value=""></option>
<option value="aaaa">aaaa</option>
<option value="bbbbb">bbbbb</option></select>

こうなる。正しい使い方なのかはわからないけど…


Hogehogeテーブルはマイグレーションで設定し適当にデータ追加してある。
idは勝手に作成されるみたいなので1つだけ。

  def self.up
    create_table :hogehoges do |t|
      t.column :category, :string
    end
  end

やっとできた。たぶん理解した…

参考:Module: ActionView::Helpers::FormOptionsHelper