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

Ruby on rails 在Rails/Formtastic中,如何限制时间输入字段中的小时数,ruby-on-rails,formtastic,Ruby On Rails,Formtastic,我需要在Rails中将持续时间显示为HH:MM,作为两个选择框,一个用于小时,另一个用于分钟。将时间限制在最多4:00。”“持续时间”(列类型:整数)在数据库中存储为分钟。 我用的是formtastic 如果我将输入显示为时间,则可以将输出格式显示为下拉列表HH:MM “'Duration',:as=>:time,:minute\u step=>15,:hint=>“以小时为单位测量,:end=>10%>” 如何限制显示供选择的小时数(下拉列表中应仅显示01、02、03、04小时数) 请告诉我R

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

如果我将输入显示为时间,则可以将输出格式显示为下拉列表HH:MM

“'Duration',:as=>:time,:minute\u step=>15,:hint=>“以小时为单位测量,:end=>10%>”

如何限制显示供选择的小时数(下拉列表中应仅显示01、02、03、04小时数)


请告诉我Rails/Formtastic是否有任何选项需要指定。或者有没有更好的方法来处理这种情况?

我看不到任何选项可以通过Formtastic来限制它。您可以将输入显示为select,并显式地传递所需的选项

<%= f.input :hours, :as=>:select, :collection => (0..4) %>
<%= f.input :minutes, :as=>:select, :collection => [0,15,30,45] %>
你可能想看看,让它们看起来更像原作


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

感谢您的解决方案。我想显示为两个选择框,一个用于小时,一个用于分钟。啊,错过了。编辑了我的答案。不确定这是否每次都有效。例如,如果分钟设置器在小时设置器之后被调用,那么我们将在durion
code
def hours=(h)self.hours=h中存储错误的信息;结束;def minutes=(m)self.minutes=m;结束;def set_duration self.duration=self.hours+self.minutes;结束<代码>代码像保存回调一样添加设置持续时间。很好。编辑了答案,请使用该方法,并修复了您的小错误。
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