Я использую time_selects ALOT в своих приложениях и решаю проблемы с выбором времени с двумя незначительными корректировками.
Первого minute_step:
f.time_select :start_of_shift, :minute_step => 15
Это позволит сократить это гнусные минуты поля выбора в очень управляемый размер (! Выбрать свой собственный)
Кроме того, я нашел модуль рубинового, что я месте я мой инициализатор папку всех моих приложений на основе времени:
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
EDIT: найден источник рубинового файла! Найдите его здесь: http://brunomiranda.com/past/2007/6/2/displaying_12_hour_style_time_select/
да я видел, что хорошо, но это не делает работу в одном выберите. Я должен закончить кодирование решения через час или около того. я отправлю его в ближайшее время – Tony
Я изменил приведенный выше ответ для работы с Rails 3, а для 12 часов вместо 0 утра. См. Https://gist.github.com/1340125. –