Rails - 12 小时制输入 - 使用 3 个框显示时间输入:HH(空白填充) - MM - AM/PM?

Rails - 12-hour time input - Display time input using 3 boxes: HH(blank padded) - MM - AM/PM?

有没有办法让 rails 以这种格式输出时间 select:

小时、分钟和 AM/PM?

的空白填充

time_select 好像分两个框来做: HHAM/PM : MM。这让我个人感到困惑,为什么向 rails 贡献代码的人会这样编码。我从未在任何地方见过这种设计实践(至少在美国是这样。这在其他国家/地区是否正常?)

我正在使用 simpleform,但似乎也找不到使用它的方法。因此,有或没有简单形式的解决方案对我都适用。

我能够使用以下代码完成此操作(如果表单对象是 '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>

然后在derp模型中:

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