2017-12-26 20 views
1

データベースにUTCでcreated_atフィールドがあるレコードがあります。 ユーザタイムゾーンの時間としてactive_adminテーブルに表示する必要があります。たとえば :私はactiveadminruby​​onrailsでユーザーのタイムゾーン定数を検出する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 
にこのコードを使用しようとした2017年12月25日午前17時52分58秒15

:DBに ページに2017年12月25日午後03時52分58秒 で作成

とうまく動作します。しかし、私はこの

Time.zone.now.name 

のようにそれを取得しようとしましたが、それは仕事と私はありません

in_time_zone(timezone_variable) 

または

in_time_zone(get_current_timezone_method) 

にそれを渡すために、ユーザーのタイムゾーン定数programmaticalyを取得する必要がありますこのコードはサーバーのタイムゾーンを取得しようとしますが、クライアントは取得しないためです。 クライアント側でクライアントタイムゾーンを取得し、タイムゾーン補正を含むactive_adminでcreated_atを表示する方法はありますか?また (previouse方法が不可能な場合)、私は別の方法を考えた - ユーザーはログイン時にDBのユーザーのタイムゾーンを格納し、

in_time_zone(action.user.timezone) 

に渡すためにDBからそれを得ます。 サーバー側のコントローラーアクションでタイムゾーン定数を取得してDBに格納する方法はありますか?

答えて

1

これは一般的なRailsの問題です。 setting a header with JavaScriptを試すことができますが、最も簡単な方法は、ユーザーが自分のユーザープロファイルに希望のタイムゾーンを手動で設定させることです。

+0

はい、JSは唯一の方法です。しかし、より良いアプローチは、[here](https://stackoverflow.com/questions/22618056/javascript-timezone-information-how-to-get-america-los-angeles-or-equivalent)で文書化されています。 –

関連する問題