Я использую time_selects ALOT в своих приложениях и решаю проблемы выбора времени с двумя небольшими изменениями.
Первый - минутный шаг:
f.time_select :start_of_shift, :minute_step => 15
Это сократит эту отвратительную минуту выбора в очень удобном размере (выберите свой!)
Кроме того, я нашел модуль ruby, который помещаю в папку инициализатора всех моих приложений, основанных на времени:
module ActionView
module Helpers
class DateTimeSelector
def select_hour_with_twelve_hour_time
datetime = @datetime
options = @options
return select_hour_without_twelve_hour_time(datetime, options) unless options[:twelve_hour].eql? true
if options[:use_hidden]
build_hidden(:hour, hour)
else
val = datetime ? (datetime.kind_of?(Fixnum) ? datetime : datetime.hour) : ''
hour_options = []
0.upto(23) do |hr|
ampm = hr <= 11 ? ' AM' : ' PM'
ampm_hour = hr == 12 ? 12 : (hr / 12 == 1 ? hr % 12 : hr)
hour_options << ((val == hr) ?
%(<option value="#{hr}" selected="selected">#{ampm_hour}#{ampm}</option>\n) :
%(<option value="#{hr}">#{ampm_hour}#{ampm}</option>\n)
)
end
build_select(:hour, hour_options)
end
end
alias_method_chain :select_hour, :twelve_hour_time
end
end
end
Хотелось бы, чтобы я мог вспомнить, где я его нашел, чтобы я мог указать источник, но в двух словах, это позволяет мне указать 12-часовое время, разбивая мои поля time_select на два простых выбора, которыми очень легко управлять.
f.time_select :start_of_shift, :twelve_hour => true, :minute_step => 15
РЕДАКТИРОВАТЬ: Найден источник файла ruby! Найдите это здесь: http://brunomiranda.com/past/2007/6/2/displaying_12_hour_style_time_select/