1

我有活动页面显示日期和时间。对于已登录的会员,我可以获取他们喜欢的时区。但是对于那些没有登录的用户,我想先检测他们的笔记本电脑时区,并在他们的本地时区显示页面。
我在 application.html.erb 中使用 jquery:

<% if session[:time_zone].blank? %>
    <script type="text/javascript">
        jQuery.ajax({
            data: {user_time_zone: $().get_timezone()},
            type: 'post',
            url: "/set_time_zone_session"
        })
    </script>

问题:它最后运行 jQuery,所以第一次,页面显示默认时区。刷新页面后,所有子序列请求时区都设置​​正确。此外,在第一次使用 javascript 请求后重新加载页面,有没有更好的方法来做到这一点?

额外:如果我必须重新加载页面。我添加 location.reload(); 在 jQuery 调用之后。重新加载发生在第一次请求完成后。有没有办法在第一个请求加载之前立即重新加载页面?否则,页面加载两次会很奇怪。

4

1 回答 1

0

我建议在客户端设置一个带有时区的 cookie,然后简单地重新加载页面。这将使您的 Rails 应用程序保持简单。

(ps HTTP 请求可能包含一个“Date”标头,为客户端提供日期+时间。您可以在生成 ruby​​onrails 输出时使用它,根本不需要 ajax。http: //www.w3.org/Protocols/rfc2616/ rfc2616-sec14.html#sec14.18 但更常见的情况是客户端不发送日期标头。)

于 2013-11-04T22:12:58.680 回答