sni*_*tko 14 timezone ruby-on-rails
我的页面上的Javascript将客户端UTC偏移量保存到cookie.如何使用此cookie创建TimeZone并将其分配给Time.zone?
我需要这样的东西:
before_filter :set_time_zone
def set_time_zone
  Time.zone = ActiveSupport::TimeZone.new('my timezone', cookies[:timezone])
end
除了这个表达式的右边部分不起作用,我不确定我是否在这里正确的方式.无法得到它.
sni*_*tko 15
这是googled回答的工作:
min = cookies[:timezone].to_i
Time.zone = ActiveSupport::TimeZone[-min.minutes]
只是为了说清楚,javascript部分:
if(!($.cookie('timezone'))) {
  current_time = new Date();
  $.cookie('timezone', current_time.getTimezoneOffset(), { path: '/', expires: 10 } );
} 
@snitko - 很长一段时间你的回答对我很有帮助.然而,正如@Giovanni指出的那样,在某些情况下它没有考虑夏令时,因为它在给定分钟偏移的情况下拉出第一个时区.我找到了一个简单的工作答案,说明了夏令时.
到这里 - http://site.pageloom.com/automatic-timezone-detection-with-javascript,这是一个javascript时区检测器.您只需将从网站链接的javascript代码(或此处)复制到您的应用程序的javascript文件之一(application.js工作正常).它允许您通过名为的对象检索时区jstz.
然后,在application.html.erb中我有
<script type="text/javascript">
  var timezone = jstz.determine();
  document.cookie = 'time_zone='+timezone.name()+';';
</script>
在application_controller.rb中,我有
before_filter :set_timezone 
private
def set_timezone
  Time.zone = cookies["time_zone"]
end
这就是你所需要的!为您的Rails应用程序正确设置了时区.
编辑:<\body>由于加载了javascript文件的方式和顺序不同,您可能需要在application.html.erb中的标记之后放置javascript cookie设置代码.
| 归档时间: | 
 | 
| 查看次数: | 14471 次 | 
| 最近记录: |