Rails - 12-часовой ввод времени - Отображение ввода времени с помощью 3 полей: ЧЧ (заполнено пустым полем) - ММ - AM / PM?

Есть ли способ для рельсов вывести время в этом формате:

введите здесь описание изображения

Пустой заполненный час, минута и AM / PM?

time_select, кажется, делает это в двух полях: HHAM / PM: MM. Это лично меня сбивает с толку, почему тот, кто внес это в rails, закодировал это именно так. Я никогда нигде не видел такой практики дизайна (по крайней мере, в США. Это нормально в других странах?)

Я использую simpleform, но, похоже, тоже не могу найти способ использовать это. Так что решение с простой формой или вне ее подойдет для меня.


person Greg Blass    schedule 03.12.2015    source источник


Ответы (1)


Мне удалось сделать это с помощью следующего кода (если объект формы - derp):

<div class="timepicker">
  <select class="hour form-control" name="derp[hour]">
    <%= options_for_select((1..12).to_a, @derp.time ? @derp.time.strftime('%l').to_i : nil) %>
  </select>
  <span class="colon">:</span>
  <select class="minute form-control" name="derp[minute]" >
    <%= options_for_select(['00', '15', '30', '45'], @derp.time ? @derp.time.strftime('%M').to_i : nil) %>
  </select>
  <select class="meridiem form-control" name="derp[meridiem]" >
    <%= options_for_select(['AM', 'PM'], @derp.time ? @derp.time.strftime('%p') : nil) %>
  </select>
</div>

Затем в сумасшедшей модели:

attr_accessor :hour, :minute, :meridiem

after_validation :parse_time

def parse_time
  if hour and minute and meridiem
    self.time = DateTime.parse("#{hour}:#{minute}#{meridiem}") 
  end
end
person Greg Blass    schedule 30.01.2016