3

我有可以在不同时区的事件

编辑后,我希望时间和日期与该事件的时区一起显示。

但是,当我点击edit时,datetime_select总是显示用户时区的时间(而不是事件的时间)。

例子:

  • 活动于上午 10 点在阿姆斯特丹 (GMT+1) 开始
  • 用户时区配置为伦敦 (GMT+0)

结果:在编辑时,事件时间被错误地预设为上午 9 点

代码片段:

def edit
  Time.zone = @event.time_zone
  @event.beginn = @event.beginn.in_time_zone
  @event.endd = @event.endd.in_time_zone

  # [...]
end

请注意,@event.time_zone包含所需的时区(上例中的“Amsterdam”)。

如何datetime_select在编辑时预设相应区域中的事件时间?

4

1 回答 1

1

正如pixeltrix在错误报告的线程中指出的那样,覆盖相关属性的读取器/获取器会更干净,如下所示:

# in event model

def beginn
  super.in_time_zone(time_zone) if super
end

def endd
    super.in_time_zone(time_zone) if super
end

这样可以省略问题中概述的编辑操作中的逻辑,并避免与依赖Time.zone的其他部分的干扰。

于 2013-03-09T02:04:50.050 回答