データベースにUTCでcreated_atフィールドがあるレコードがあります。 ユーザタイムゾーンの時間としてactive_adminテーブルに表示する必要があります。たとえば :私はactiveadminrubyonrailsでユーザーのタイムゾーン定数を検出する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に格納する方法はありますか?
はい、JSは唯一の方法です。しかし、より良いアプローチは、[here](https://stackoverflow.com/questions/22618056/javascript-timezone-information-how-to-get-america-los-angeles-or-equivalent)で文書化されています。 –