gpt4 book ai didi

javascript - 使用 javascript 从客户端设置 Rails 上的时区

转载 作者:行者123 更新时间:2023-12-02 19:05:40 25 4
gpt4 key购买 nike

我有一个设置时区的网络应用程序

post_controller.rb

before_filter :set_time_zone
def set_time_zone
Time.zone = user.time_zone
end

现在,我不是在注册时从用户那里获取 time_zone,而是想知道如何从客户端动态设置时区并将其设置在 before_filter 中。我试图使用 detect_timezone_rails gem 。 gem 提供了一种访问客户端时区的简单方法,只需从 js 文件中调用这样的函数即可。

$(document).ready(function(){
$('#your_input_id').set_timezone();
});

现在,上面的代码会自动设置您的隐藏字段输入或选择输入,但我想知道您是否可以简单地使用函数调用来保存到 session 并从 Rails 服务器检索它。我想当用户第一次访问该网站时,可以设置时区,并且可以使用 session 值来设置其余访问的时区。我认为可以使用 session 值在过滤器之前设置时区。作为 javascript 的新手,我不确定如何访问 Rail 的加密 cookie 存储来设置值。这可能吗?如果是这样,我该怎么做?提前致谢,

最佳答案

#javascript
function readCookieValue(cookieName)
{
return (result = new RegExp('(?:^|; )' + encodeURIComponent(cookieName) + '=([^;]*)').exec(document.cookie)) ? decodeURIComponent(result[1]) : null;
}

$(document).ready(function(){

if(readCookieValue("time_zone") === null) {
$.post('/set_time_zone',
{ 'offset_minutes':(-1 * (new Date()).getTimezoneOffset())});
}

#controller:
def set_time_zone
offset_seconds = params[:offset_minutes].to_i * 60
@time_zone = ActiveSupport::TimeZone[offset_seconds]
@time_zone = ActiveSupport::TimeZone["UTC"] unless @time_zone
if @time_zone
cookies[:time_zone] = @time_zone.name if @time_zone
render :text => "success"
else
render :text => "error"
end
end

关于javascript - 使用 javascript 从客户端设置 Rails 上的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14341483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com