datetime_select より詳細に日付を指定したい
datetime_select は,日付,時間を利用するのに便利な html_helperです.
どのようなオプションが利用できるか,マニュアルを見ても分かりにくいですが,
datetime_selectは,select_day, select_hourなどを順番に呼んでいるだけなので,
selct_* のオプションがそのまま利用できます.
例えば
<%= datetime_select :reserve, :time, { :start_year=>Time.now.year, :end_year=>Time.now.year+2, :use_month_numbers=>true, :minute_step=>10} %>
とすると,
- 今年(2007)年から2009年までのみが選択可能 (start_year, end_year)
- 月の表示が数字(use_month_numbers)
- 時間の指定は10分毎(minute_step)
となった時刻指定が可能になります.その他オプションは,actionpack/action_view/helpers/date_helper.rb を見るのがはやそう.
もう少し細かく指定したい場合には(例えば,○年○月○日,○時○分と書くとか),datetime_select を利用せず,自分で各時間のフォームを書いてあげる必要があります.
- 下記は○年○月○日○時○分,で選択する例.
<%= select_year Time.now, {:prefix=>"reserve", :field_name=>"time(1i)", :start_year=>Time.now.year, :end_year=>Time.now.year+2} %>年 <%= select_month Time.now, {:prefix=>"reserve", :field_name=>"time(2i)", :use_month_numbers=>true} %>月 <%= select_day Time.now, {:prefix=>"reserve", :field_name=>"time(3i)" } %>日 <%= select_hour Time.now, {:prefix=>"reserve", :field_name=>"time(4i)" } %>時 <%= select_minute Time.now, {:prefix=>"reserve", :field_name=>"time(5i)", :minute_step=>10 } %>分
- 上記を調べているときに,datetime_separator, time_separatorという時刻を区切る文字を指定できるオプションが,マニュアルには書いてあるのだけど,実際には動かない(ソースにかかれていない)ことが判明.しかし,#7863 で解決済みらしい.http://dev.rubyonrails.org/ticket/7863 :)