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
有没有办法让 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