datetime_select のオプション

scaffold でモデルを作成した際に、recorded_at:datetime といった datetime の型を指定したときなどに自動生成される、datetime_select ヘルパーについてのメモ。

何もオプションをしていしない場合は、

<%= form_for(@record) do |f| %>
  <%= f.datetime_select :recorded_at %>
<% end %>

以下のHTMLが出力されますが、

:
以下のように、オプションを指定すると、

 22   <div class="field">
 23     <%= f.label :recorded_at %><br />
 24     <%= f.datetime_select :recorded_at %>デフォルトのまま。<br>
 25     <%= f.datetime_select :recorded_at, :discard_hour => true, :discard_minute => true %>時と分を無効に。<br>
 26     <%= f.datetime_select :recorded_at, :use_month_numbers => true, :start_year => 2010, :end_year => Time.now.year, :date_separator => "/" %>月を数字にして、日付の区切りを/に。開始年と終了年を指定。<br>
 27     <%= f.datetime_select :recorded_at, :use_month_numbers => true, :start_year => 2010, :end_year => Time.now.year, :default => Time.at((Time.now.to_i/86400)*86400).utc %>時間を今日の00:00に変更。<br>
 28     <%= f.datetime_select :recorded_at, :start_year => 2010, :end_year => Time.now.year, :use_month_names => %w(睦月 如月 弥生 卯月 皐月 水無月 文月 葉月 長月 神無月 霜月 師走) %>月の表示を和暦に。
 29   </div>

次のようなHTMLが出力されます。




: デフォルトのまま。

時と分を無効に。

// : 月を数字にして、日付の区切りを/に。開始年と終了年を指定。

: 時間を今日の00:00に変更。

: 月の表示を和暦に。

和暦なんてまず使わないだろうけど、メモ。

詳細は、http://api.rubyonrails.org/ で datetime_select, select_month などで検索したり、
./actionpack-3.1.3/lib/action_view/helpers/date_helper.rb の datetime_select から読むとわかりやすいです。


追記:
一日の始まりは、Time.beginning_of_day でできるらしい。