我有活动页面显示日期和时间。对于登录成员,我可以抓住他们的首选时区。但对于那些未登录的用户,我想首先检测他们的笔记本电脑时区,并在当地时区显示该页面。
我在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调用之后。第一次请求完成后重新加载。有没有办法在第一个请求加载之前立即重新加载页面?否则,页面加载两次会很奇怪。
答案 0 :(得分:0)
我建议在客户端设置带时区的cookie 然后只需重新加载页面。这将使您的rails应用程序变得简单。
(p.s.HTTP请求可能包含一个“Date”标题,为客户提供日期+时间。您可以在生成rubyonrails输出时使用它,根本不需要ajax。 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.18 但更常见的情况是客户端不发送日期标题。)