我要求在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指定选项,请告诉我。或者有更好的方法来处理这种情况吗?
答案 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让它们看起来更像原版。
可能有一些聪明,快捷的方法可以做到这一点,但这是我想到的第一件事。