在Rails表单中以time_select显示子秒

时间:2013-12-26 21:33:59

标签: ruby-on-rails-3

我有一个记录运动​​时间的表格:我需要分钟,秒和百分之一秒,即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

1 个答案:

答案 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))