我有一个记录运动时间的表格:我需要分钟,秒和百分之一秒,即1:31.43 ---我不需要小时。 在我的表格中,我使用:
<%= f.time_select :perf_time, {:discard_hour => true, :default => {:minute => '00', :second => '00'}, :include_seconds => true} %>
显示2个选择下拉菜单,一个用于分钟,一个用于秒。
我已经为百分之一秒添加了一个单独的字段(类型为整数):
<%= f.number_field :perf_time_cents, :in => 0..999 %>
现在我想在我的帮助器中使用方法.change()
来更改添加/更改微秒到perf_time。这是我的代码,但它没有做任何事情。
before_save :set_perf_time
def set_perf_time
self.perf_time.change(usec: (self.perf_time_cents * 10))
end
答案 0 :(得分:1)
time_select
中没有毫秒选项,因为具有1000个可能值的组合框不会对用户友好。
您可以使用单独的文本字段表示毫秒数,HTML5类型为number
:
<%= f.number_field :perf_time_millis, :in => 0..999 %>
在控制器中,使用选择和文本输入字段中的值来获得以毫秒为单位的全部时间:
time_in_millis = params[:perf_time_millis].to_i + 1000 * (params["perf_time(5i)"].to_i * 60 + params["perf_time(6i)"].to_i))