如何在自定义时区中按时间预填充datetime_select?

时间:2013-03-04 19:07:09

标签: ruby-on-rails controller ruby-on-rails-3.2 timezone edit

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

修改后,我想要时间&日期显示该事件的时区。

但是,当我点击编辑时,datetime_select始终显示用户时区的时间(而不是其中一个事件)。

示例:

  • 活动于阿姆斯特丹上午10点开始(格林尼治标准时间+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 包含所需的时区(上例中的“阿姆斯特丹”)。

如何在编辑时将datetime_select预设到相应区域中的活动时间?

1 个答案:

答案 0 :(得分: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 的其他部分。