使用rubyonrails activeadmin检测用户时区常量

问题描述 投票:1回答:1

我在数据库中有记录,其中包含UTC中的created_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

它工作正常。但我需要以编程方式将用户时区常量传递给它

in_time_zone(timezone_variable)

要么

in_time_zone(get_current_timezone_method)

我试着这样做

Time.zone.now.name

但它不起作用我想是因为这段代码试图获得服务器时区而不是客户端。有没有办法在客户端获取客户端时区并在active_admin中显示包含时区更正的created_at?另外(如果前一种方式是不可能的)我想到了另一种方式 - 在用户登录时将用户时区存储在数据库中。并从DB获取它以进入

in_time_zone(action.user.timezone)

。有没有办法让服务器端的控制器操作中的用户时区常量存储在DB中?

ruby-on-rails timezone activeadmin
1个回答
1
投票

这是一个常见的Rails问题,没有好的答案。您可以尝试使用setting a header with JavaScript,但最简单的方法是让用户在其用户配置文件中手动设置其首选时区。

© www.soinside.com 2019 - 2024. All rights reserved.