嗨,我正试图在Ruby on Rails上做一个小餐馆网站(v.3.2.13)。
您可以在此处查看我当前的配置:How to use params in another action?
现在可以预订一张桌子,但没有验证。我想我必须在form_tag中验证开始时间,结束时间和日期,如下所示:
确定不应验证结束时间。每个预订持续2个小时,所以我只需要分配值Starttime time + 2 hours。
我尝试使用time_select
和date_select
,但格式看起来很奇怪(5i,4i,...),我无法做任何事情。
我应该使用gem进行验证吗?是否可以加总时间(开始时间+2小时)?我可以使用其他格式的时间/日期吗?我是否忘记了进一步验证的方面?
我不知道如何继续。 感谢
答案 0 :(得分:2)
k我终于用Regex
做了t=params[:Starttime].scan(/\d\d/)
my_time = t[0] << ":" << t[1] << ":00"
Time.zone.parse(my_time)
这是Time.zone.parse的参考 这最终会给你你想要的时间对象 如果它适合你,请通知我。
答案 1 :(得分:1)
Checkout validates_timeliness gem它使您的模型保持干净和直观,并支持I18n本地化,并提供灵活的错误消息,以进行各种日期/时间比较。
validates_datetime :starts_at, :after => :now
validates_datetime :ends_at, :on_or_after => :two_days_later, :if => :starts_at
def two_days_later
self.starts_at + 2.hours
end
答案 2 :(得分:0)
您可以使用此解析函数更改您从中选择日期的表单给出的defult格式,它将返回ruby中的日期对象。那么你可以很容易地应用你想要的所有验证。
Date.parse(yourDate.to_s)
以后检查有date_object.future?
的直接方法,因此您可以查看。
是的,你可以在轨道上加上时间,your_time + 2.hours
可以增加2小时的时间。