2013-07-24 18 views
8

データベースのデフォルト時間はutcであるため、正しい時間で表示することができます。これを行うには、私はcolumn :created_atを取ると、この中にそれを変更しなければならなかった:ActiveAdminが時間を表示する方法を変更する方法(毎回)

index do 
... 
    column :created_at, :sortable => :created_at do |obj| 
    obj.created_at.localtime.strftime("%B %d, %Y %H:%M) 
    end 
... 
end 

は一度か二度行うことは非常に簡単に思えるが、あなたはすべてのインデックスおよびshowメソッドをオーバーライドする必要がある場合、プロセスが取得少し課税です。

ActiveAdminが各発生を無効にすることなく時間を表示する方法をオーバーライドする方法はありますか?

私は関数を作成したり、おそらくより良い時間のために提供された関数を使用することができますが、私は時間を表示するたびにそれを使用しなければなりません。私は心配することなくそれを無効にしたい、私はそれを逃した。

答えて

4

1. Javascriptを

、それは非常に短く、DBフィールドを追加する必要ありませんので、これは容易な方法です。これは、ブラウザからユーザーのタイムゾーンを使用するために機能します。 This答えはこれを行う方法についての洞察を与えます。このプロセスはthis railscastで見つけることができるデータベース

から

2。

本来、ユーザーテーブルにtime_zoneフィールドを格納します。その後、before_filter(around_filterは良い考えかもしれませんが)を使用して、コントローラのタイムゾーンを設定します。

あなただけの、常にこのような行を追加することで、config/initializers/active_admin.rbに特定のフィルタを使用するためにそれを伝えることでActiveAdminターゲットにすることができます
before_filter :set_time_zone 

private 
def set_time_zone 
    Time.zone = current_user.time_zone if current_user 
end 
2

だから、私の理解のために、あなたは二つのことが必要です。あなたが集合して、レールのアプリの右のタイムゾーンを、これを達成することができます

  1. サーバの現地/タイムゾーン

    を、active_adminはデフォルトであることをピックアップします。たとえば、あなたのレールの設定ファイル(のconfig/application.rb)に:

    config.time_zone = '東部標準時(米国&カナダ)'

  2. デフォルト時刻形式

    あなたはこのChange default date formatter in active adminを参照することができます

幸運〜私はこれを行うには二つの方法があることがわかりました

+0

タイムゾーンは各ユーザに固有のものなので、そのようなタイムゾーンを設定するとうまくいきません –

+0

まあ、クライアントの時間について話しているなら、 'obj.created_at.localtime.strftime("%B%d、 –

+0

ええ、私はゆっくりとこの実現に近づいています.Javascriptは良い呼び出しですが、私はこれからでした。%Y%H:%M)はまだ動作しません。 dbにフィールドを追加しますが、それは不要です。 –

15

:(Railsの4前のRailsのバージョンのかconfig.before_filter :set_admin_timezone

config.before_action :set_admin_timezone 

ApplicationControllerでは、set_admin_timezoneメソッドを定義するだけで、ActiveAdminがそれを使用します。たとえば:

def set_admin_timezone 
    Time.zone = 'Eastern Time (US & Canada)' 
end 

あなたは(彼らの特定のタイムゾーンを取得するために)その方法では、現在の管理者ユーザーを調べることができるはずですが、私はそれを試していません。

+0

最初に設定されるようにするには、 'config。 prepend_before_action - > {Time.zone = "Brisbane"} '(別の場所で使用されていないため、インラインコードも使用します) – Zubin

+1

Rails 5アプリケーションの場合、 'config.before_action:set_admin_timezone'を使用するようにしました – user2001785

+0

ありがとう、私はこれを反映するために私の答えを更新しました。 –

関連する問題