Rails 3: DateTime_Select с AM / PM варианты
-
01-10-2019 - |
Вопрос
В Rails 3 есть способ использовать часы datetime_select и дисплея, показывающие 12-часовые параметры AM / PM, а не на 24 часа?
Решение
Если кто-то споткнулся на этот вопрос, ответ на рельсы 3.2:
<%= f.datetime_select :attribute_name,
ampm: true %>
Другие советы
Вот метод, который я добавил в мой помощник класса:
def am_pm_hour_select(field_name)
select_tag(field_name,options_for_select([
["1 AM", "01"],["2 AM", "02"],["3 AM", "03"],["4 AM", "04"],["5 AM", "05"],["6 AM", "06"],
["7 AM", "07"],["8 AM", "08"],["9 AM", "09"],["10 AM", "10"],["11 AM", "11"],["12 PM", "12"],
["1 PM", "13"],["2 PM", "14"],["3 PM", "15"],["4 PM", "16"],["5 PM", "17"],["6 PM", "18"],
["7 PM", "19"],["8 PM", "20"],["9 PM", "21"],["10 PM", "22"],["11 PM", "23"],["12 AM", "0"]]))
end
Затем я подключил этот метод на мой взгляд:
<%= am_pm_hour_select "eventtime[start(4i)]" %>
Казалось, что делает трюк, но если есть более идиоматический способ сделать это, мне было бы интересно услышать.
(Обновление: Исправленные ошибки, найденные Thucydides)
Код ниже относится к полночь и полдень неправильно: он называет полдень '12 утра, «который получается; Он называет полночь '12 вечера, «который полдень.
Кроме того, код должен использовать 0:00 как полночь, который является международным стандартом.
Фиксированный:
def am_pm_hour_select(field_name)
select_tag(field_name,options_for_select([
["1 AM", "01"],["2 AM", "02"],["3 AM", "03"],["4 AM", "04"],["5 AM", "05"],["6 AM", "06"],
["7 AM", "07"],["8 AM", "08"],["9 AM", "09"],["10 AM", "10"],["11 AM", "11"],["Noon", "12"],
["1 PM", "13"],["2 PM", "14"],["3 PM", "15"],["4 PM", "16"],["5 PM", "17"],["6 PM", "18"],
["7 PM", "19"],["8 PM", "20"],["9 PM", "21"],["10 PM", "22"],["11 PM", "23"],["Midnight", "0"]]))
end