【发布时间】:2014-11-30 06:46:15
【问题描述】:
我试图得到这个答案,但没有运气,所以我会再试一次。
我已经实现了 railcast timezone 好东西,以允许用户设置他们的时区。有用。 Time.zone.now 给出正确的时区。它在这里
http://stevenyue.com/2013/03/23/date-time-datetime-in-ruby-and-rails/
我有一些事件,并且一直在尝试在我的表单中获取datetime_select,以便给我一个也属于用户时区的时间。
我的目标是能够将其与当前时间 (Time.zone.now) 进行比较,以验证开始时间不早于当前时间。最终结束时间>开始时间等。
我已经厌倦了几种方法,包括没有运气的这种方法......
这个——他后来回答了自己的问题(正是我的问题)
Rails datetime_select posting my current time in UTC
def start_date_cannot_be_in_the_past
if date_start.in_time_zone(Time.zone) < Time.zone.now
errors.add(:date_start, "has already passed")
end
end
上述方法似乎不起作用,因为您无法像那样提取date_start。它被分成不同的组件,所以我尝试做这样的事情
def start_date_cannot_be_in_the_past
date = DateTime.new(params[event][date_start(1i)].to_i, params[event][date_start(2i)].to_i, params[event][date_start(3i)].to_i, params[event][date_start(4i)].to_i, params[event][date_start(5i)].to_i)
if date.in_time_zone < Time.zone.now
errors.add(:date_start, "has already passed")
end
end
在我的模型中,我无法访问参数,所以我不知道如何让它工作...
如果可能,我想转移到 jquery 日历/时间选择器,因为我似乎无法完成这项工作..但是任何关于替代方案或这方面的建议都值得赞赏..
【问题讨论】:
标签: ruby-on-rails ruby validation date datetime