如果用户更改系统时区,Rails中的jstz时区似乎不会更新

时间:2015-04-10 15:52:06

标签: javascript ruby-on-rails

我实现了http://thisbythem.com/blog/clientside-timezone-detection/。以下是关键文件/代码:

的应用程序/控制器/ application_controller.rb

around_filter :set_timezone
...
private

  def set_timezone
    if(current_learner)
      timezone = Time.zone = current_learner.time_zone
    else
      timezone = Time.find_zone(cookies[:timezone])
    end
    Time.use_zone(timezone) { yield }
  end

的应用程序/视图/布局/ application.html.erb

<script class="code" type="text/javascript">
$(function() {
   $('#flash_notification').hide().delay(500).slideDown('slow', function() {
      $(this).delay(4000).fadeOut();
   });
   $("#flash_notification").live('click', function(){
       $(this).stop().fadeOut();;
   });
});
//set event times for non-auth users
var tz = jstz.determine();
$.cookie('timezone', tz.name(), { path: '/' });
</script>

除了以上添加的jquery.cookie.js&amp; jstz.main.js到app / assets / js。首次访问网站时正确设置了时区cookie,但是如果我更改系统时区并刷新,我就不会看到cookie中的更改。另外,如果我到了js控制台并执行:

tz=jstz.determine();
tz.name();

...我在这里也没有看到更新的时区设置。同时,如果我删除cookie并刷新,那么我会得到新的时区。

1 个答案:

答案 0 :(得分:0)

原来我正在使用jstz文件。我已经删除了jstz.main.js而不是jstz.js供参考这里是你需要的:

https://bitbucket.org/pellepim/jstimezonedetect/src/823d744c9757481f0e33a6fea462514aa05fb30a/dist/jstz.js