在Rails / Formtastic中,如何限制时间输入字段中的小时数

时间:2011-06-28 16:32:55

标签: ruby-on-rails formtastic

我要求在Rails中将持续时间显示为HH:MM作为两个选择框,一个用于小时,另一个用于分钟。将小时数限制为最多4:00。 ' duration'(列类型:整数)在数据库中存储为分钟。 我正在使用formtastic。

如果我在时间上显示输入,我可以将输出格式下拉为HH:MM。

"<%= f.input:duration,:label => '持续时间',:as =>:time,:minute_step => 15,:hint =>"以小时为单位测量",:end => 10%>"

如何限制显示的选择时间(只有01,02,03,04应在下拉列表中显示数小时)?

如果有任何Rails / Formtastic指定选项,请告诉我。或者有更好的方法来处理这种情况吗?

1 个答案:

答案 0 :(得分:1)

我没有看到通过Formtastic限制它的任何选项。您可以将输入显示为选择,并将其显式传递给您。

<%= f.input :hours, :as=>:select, :collection => (0..4) %>
<%= f.input :minutes, :as=>:select, :collection => [0,15,30,45] %>

然后您可能需要在模型中添加这些虚拟属性:

before_save :set_duration

def set_duration
  self.duration = @hours * 60 + @minutes
end

def hours
  self.duration / 60;
end

def minutes
  self.duration % 60;
end

def hours=(h)
  @hours = h
end

def minutes=(m)
 @minutes = m
end

def duration=(d)
  @hours = d / 60
  @minutes = d % 60
  self.set_duration
end

你可能想看看this answer让它们看起来更像原版。

可能有一些聪明,快捷的方法可以做到这一点,但这是我想到的第一件事。