はじめてのRuby on Rails、トラブル記録
<< Rails3でjQueryを使う | TOP | Rails3でカスタムバリデーション >>
スポンサーサイト

一定期間更新がないため広告を表示しています

posted by スポンサードリンク | | - | - | - |はてなブックマーク - スポンサーサイト
select_tagのオプションに配列を使う
selectフォームで、年だけ選択するやつが作りたいと思いました。 

date_selectで:discard_month => true, :discard_day => trueをつけても 
見た目は年だけのセレクトになるのだけれど、保存する側のカラムがintegerだと 
multi parameterなんちゃらエラーが出て対応するのが面倒だったので、 
純粋に「2011,2010,2009...」とかのセレクトフォームを作ったほうがいいやとなったので。

まずModelに年数の配列をセットします。
def new
  @years = Array.new((1950..Time.now.year).map{|y| [y,y]}.reverse)
end
reverseは降順にするためにつけてます。ほかのModel.newとかは上には書いていないので適宜。 

Viewではこんな感じで呼びます。
<%= f.select(:year, options_for_select(@years, @history[:year])) %>

超簡単! 

@history[:year]はselectedの値。エラーが出た場合にその前に入力していた値がそのまま選択されているようにするために入れる必要があります。(Historyモデルだったとして)

実はこれをやるのにどうやろうか悩んで調べてしまいました…。ハズカシイ。 options_for_select([name,value],[name,value])って感じでいつも配列書いてるんだから当たり前じゃんて感じしょんぼり

配列の中身を変えれば、Viewでオプションの中身をごちゃごちゃ書かなくて済むので全般的にこの書き方は良さそう。
posted by トモト | 14:42 | Rails小ネタ | comments(0) | trackbacks(0) |はてなブックマーク - select_tagのオプションに配列を使う
スポンサーサイト
posted by スポンサードリンク | 14:42 | - | - | - |はてなブックマーク - スポンサーサイト
コメント
コメントする










この記事のトラックバックURL
http://hajimete-ruby.jugem.jp/trackback/68
トラックバック
Rails3レシピブック 190の技
Rails3レシピブック 190の技
ついにRails3対応版が出ました!!
WEB+DB PRESS Vol.58
WEB+DB PRESS Vol.58
Rails2系から3への移行時に知りたいことがひとまとまりになっててよかった!色々ググるよりこれを読む方が早い。
Rubyレシピブック 第3版 303の技
Rubyレシピブック 第3版 303の技
Rubyやるならこのリファレンスは必要。
Search this site