2017-12-26 6 views
1

Ich habe Datensätze in der Datenbank, die created_at Feld in UTC hat. Es muss in der Tabelle "active_admin" als Zeit in der Benutzerzeitzone angezeigt werden. Zum Beispiel: in DB auf 2017.12.25 15.52.58 auf Seite erstellt: 2017-12-25 15 17:52:58Ermitteln Benutzer Zeitzone konstant mit rubyonrails activeadmin

Ich habe versucht, diesen Code in activeadmin zu verwenden

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 

und es funktioniert gut. Aber ich muss Benutzer Zeitzone konstant programmaticaly passieren sie in

in_time_zone(timezone_variable) 

oder

in_time_zone(get_current_timezone_method) 

Ich habe versucht, es zu bekommen, wie diese

Time.zone.now.name 

bekommen, aber es funktioniert nicht und ich denke es, weil dieser Code versucht, die Server-Zeitzone zu bekommen, aber keinen Client. Gibt es eine Möglichkeit, Client-Zeitzone auf Client-Seite zu erhalten und created_at in Active_admin anzuzeigen, die Zeitzonen-Korrektur enthalten? auch (wenn previouse Art und Weise unmöglich ist) dachte ich über eine andere Art und Weise - zu speichern Benutzer Zeitzone in DB, wenn der Benutzer angemeldet und von DB in

passieren
in_time_zone(action.user.timezone) 

bekommen.. Gibt es eine Möglichkeit, Benutzer Zeitzone Konstante in Controller-Aktion auf der Serverseite zu erhalten, um es in der DB zu speichern?

Antwort

1

Dies ist ein gewöhnliches Rails-Problem ohne gute Antwort. Sie können versuchen, setting a header with JavaScript, aber die einfachste Möglichkeit ist, den Benutzer ihre bevorzugte Zeitzone in ihrem Benutzerprofil manuell festlegen.

+0

Ja, JS ist der einzige Weg. Ein besserer Ansatz ist jedoch dokumentiert [hier] (https://stackoverflow.com/questions/22618056/javascript-timezone-information-how-to-get-america-los-angeles-or-äquivalent). –