Rails 3: Einstellen der Zeitzone auf die aktuelle Zeitzone des Benutzers

8

Ich habe dies in Application Controller:

%Vor%

Aber ich bekomme immer den Fehler:

%Vor%

und ich weiß einfach nicht warum ...

Ich hoffe, jemand kann helfen

    
Max 24.11.2010, 16:46
quelle

3 Antworten

11

Max - der ryandaigle.com Artikel Sie haben Links zu dieser Beschreibung erwähnt, in der Sie sich befinden Sie müssen eine Migration erstellen, um dem Benutzer "time_zone" als Attribut hinzuzufügen

(aus dem Artikel, in der 2.x-Syntax)

%Vor%

später

%Vor%

Aus diesem Grund gibt Ihre .time_zone ein method_missing zurück - Sie haben die time_zone noch nicht auf dem Benutzer gespeichert.

    
Jesse Wolgamott 24.11.2010, 17:03
quelle
25

Neben Jesses Antwort sollte ich hinzufügen, dass Sie im Allgemeinen vermeiden können, eine neue Spalte in db hinzuzufügen und einfach eine benutzerdefinierte Methode im Benutzermodell zu erstellen und Cookie verwenden , um den Benutzer zu erhalten Zeitzone:

in der Clientseite (js):

%Vor%


im Anwendungs-Controller:

%Vor%     
yek 08.05.2011 21:47
quelle
2
%Vor%

Dies ist nicht korrekt, da der Zeitversatz nicht konstant ist, sondern von den Sommerzeitperioden abhängt. Rails erwartet die Standardzeitverschiebung beim Aufruf von ActiveSupport :: TimeZone [-min.minutes] .

ex: in Frankreich am Datum 09/03/2013 10:50:12 +02: 00, wird Ihr Javascript -120 als Offset zurückgeben, wo ActiveSupport -60 benötigt, um die französische Zeitzone aufzulösen.

Dann müssen Sie überprüfen, ob dies eine Sommerzeit in JS ist. Wenn dies der Fall ist, müssen Sie dies tun subtrahieren Sie den Offset um eine Stunde, um den richtigen von Rails verwendeten Wert zu erhalten.

    
lcobos 03.09.2013 12:18
quelle

Tags und Links