f.time_field,24小时制 - Rails Fields

时间:2016-02-02 18:13:54

标签: ruby-on-rails

我有一个小Rails应用程序,我需要使用24小时时钟输入时间。现在,我得到了:

  <div class=".col-md-7">
    <%= f.label :backinservice %><br>
    <%= f.time_field :backinservice %>
  </div>

提供AM / PM选项。当我输入像18:56这样的时间时,它会自动将其转换为06:56 PM。通常这样就完全可以了,只是不在这个应用程序中。

我也尝试过:

  <div class=".col-md-7">
    <%= f.label :recieved %><br>
    <%= f.time_field :recieved, :format=>"%H:%M" %>
  </div>

但这也不起作用。

是否有:format选项允许直接使用24小时制?

2 个答案:

答案 0 :(得分:4)

您必须使用value密钥传递格式。

<div class=".col-md-7">
  <%= f.label :recieved %><br>
  <%=
    f.time_field :recieved,
      value: "%H:%M",
      min: 'hh:mm:ss',
      max: 'hh:mm:ss'
  %>
</div>

doc说:

  

通过尝试在对象的值上调用带有“%T.%L”的strftime来生成默认值。 仍然可以通过传递“值”选项来覆盖它。

答案 1 :(得分:0)

为了使它对我有用,我必须执行以下操作:

<%=
    f.time_field :my_time_field,
      value: @model_instance.my_time_field.strftime("%H:%M")
  %>

通过查看time_field的definition发现了这一点,即仅创建了Tags::TimeField.new的新实例

Tags::TimeField.new只会做define the format的一件事。