Da die Standardzeit in der Datenbank in utc ist, wollte ich in der Lage sein, sie immer noch in der richtigen Zeit des Benutzers anzuzeigen. Um dies zu tun, musste ich column :created_at
nehmen und in folgendes umwandeln:
Scheint ziemlich einfach, ein- oder zweimal zu machen, aber wenn Sie jeden Index und jede Anzeigemethode überschreiben müssen, ist der Prozess ein wenig anstrengend.
Gibt es eine Möglichkeit zu überschreiben, wie ActiveAdmin die Zeit anzeigt, ohne jedes Vorkommen zu überschreiben?
Ich weiß, dass ich eine Funktion erstellen oder die Funktionen, die für die Zeit zur Verfügung gestellt werden, besser nutzen könnte, aber ich müsste sie jedes Mal verwenden, wenn ich die Zeit anzeigen möchte. Ich möchte es außer Kraft setzen, ohne mir Sorgen zu machen. Ich habe einen vermisst.
Ich habe herausgefunden, dass es zwei Möglichkeiten gibt, dies zu tun:
1. Javascript
Dies ist die einfachere Methode, da sie sehr kurz ist und kein db-Feld hinzufügt. Es funktioniert, weil es die Zeitzone des Benutzers von ihrem Browser verwendet. Diese Antwort gibt einen Einblick, wie das geht.
2. Aus der Datenbank
Dieser Prozess kann in diesem Railscast gefunden werden.
Speichern Sie im Wesentlichen ein time_zone-Feld in der Benutzertabelle. Verwenden Sie dann einen before_filter (obwohl ein um_filter möglicherweise eine bessere Idee ist), um die Zeitzone im Controller festzulegen.
%Vor% Sie können nur ActiveAdmin als Ziel verwenden, indem Sie angeben, dass immer ein bestimmter Filter in config/initializers/active_admin.rb
verwendet werden soll, indem Sie eine Zeile wie folgt hinzufügen:
(oder config.before_filter :set_admin_timezone
für Versionen von Rails vor Rails 4)
Dann können Sie in Ihrem ApplicationController einfach die Methode set_admin_timezone definieren und ActiveAdmin wird sie verwenden. Zum Beispiel:
%Vor%Sie sollten den aktuellen Admin-Benutzer in dieser Methode nachschlagen können (um ihre bestimmte Zeitzone zu erhalten), aber ich habe das nicht versucht.
Also für mein Verständnis brauchen Sie zwei Dinge:
Ortszeit / Zeitzone
Sie können dies erreichen, indem Sie die richtige Zeitzone Ihrer Rails-App festlegen, die active_admin übernimmt diese standardmäßig. Zum Beispiel in Ihrer Rails-Konfigurationsdatei (config / application.rb):
config.time_zone = 'Eastern Time (USA & Kanada)'
Standardzeitformat
Sie können diese Standardformatierung für Datumsangaben im aktiven Administrator ändern
Viel Glück ~
Tags und Links datetime ruby-on-rails activeadmin