我在数据库中有记录,它在UTC中创建了_at字段。需要在active_admin表中显示它作为用户时区的时间。例如:
在DB中创建于2017-12-25 15:52:58
上一页:2017-12-25 15 17:52:58
我尝试在activeadmin中使用此代码
paginated_collection(user_actions.page(params[:page]).per(15), download_links: false) do
table_for(collection, sortable: false) do |action|
column ("Timestamp"){|action| action.created_at.in_time_zone('EET').strftime("%Y-%m-%d %H:%M:%S")}
end
end
但是我需要以编程方式获取user timezone常量来将其传递给
in_time_zone(timezone_variable)
或
in_time_zone(get_current_timezone_method)
我试着这样弄
Time.zone.now.name
但它不工作,我认为这是因为这段代码试图获得服务器时区,但不是一个客户端。**是否有任何方法可以在客户端获得客户端时区,并在active_admin中显示created_at,其中包括时区校正?**此外(如果以前的方式是不可能的)我想到了另一种方法-在用户登录时将用户的时区存储在DB中。并从DB中获取它传递到
in_time_zone(action.user.timezone)
.有没有办法在服务器端的controller action中获取用户的timezone常量,并将其存储在DB中?
1条答案
按热度按时间qq24tv8q1#
这是一个常见的Rails问题,没有好的答案。你可以尝试setting a header with JavaScript,但最简单的方法是让用户在他们的用户配置文件中手动设置他们的首选时区。