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

时间:2017-12-26 15:19:26

标签: ruby-on-rails timezone activeadmin

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

它工作正常。但我需要让用户时区常规programmaticaly将其传递到

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)

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

1 个答案:

答案 0 :(得分:1)

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