Rails - Datumszeit in der angegebenen Zeitzone auswählen

9

Ich arbeite mit einer App für eine Konzerttour-Website, auf der alle Zeiten (Ankündigungszeiten, Startzeiten für den Verkauf und Startzeiten für Veranstaltungen) für die Zeitzone jedes einzelnen Veranstaltungsorts lokal sind. Ich nehme das Benutzer eingegebene Datum / Zeit wo anwendbar und führe ein before_filter, um die passende Zeitzone einzustellen, so dass alles in der Datenbank in UTC gespeichert wird. Für die 'neue' Form und das Anzeigen der Zeiten in Index- und Show-Aktionen ist das überhaupt kein Problem. Wenn die Daten wieder aus der Datenbank und in eine Ansicht zurückgebracht werden, verwende ich in_time_zone, um den jeweiligen Ort anzupassen.

Das einzige Problem ist auf dem Bearbeitungsformular. Die Auswahl Datum / Uhrzeit zeigt die Daten in UTC an. Wenn ich auf der Website arbeite, passe ich mich mental an, aber für andere ist es verwirrend. Ich möchte etwas in der Art von:

machen

<%= f.datetime_select :start_datetime.in_time_zone(@event.time_zone) %>

Oder in der Steuerung:

%Vor%

Dann einfach, <%= f.datetime_select :start_datetime %> .

Leider habe ich den richtigen Weg nicht gefunden. Hast du irgendwelche Ideen, die es wert sind, geschossen zu werden?

Vielen Dank.

    
John Harper 06.06.2011, 01:04
quelle

4 Antworten

3

Sie können die Standardmethode von datetime_select wie folgt verwenden:

%Vor%

Da der Standardwert angezeigt wird, wird der Client davon ausgehen, dass die Zeiten in seiner lokalen Zeitzone eingegeben werden müssen, aber ... Dieser Wert wird in der Zeitzone standardmäßig für Ihre Anwendung verwendet (wie in application.rb angegeben und der Standardwert ist UTC). Sie benötigen also eine serverseitige Codierung, um sie in den korrekten Wert zu konvertieren.

    
Munish 30.05.2012 17:23
quelle
1

Ich bin mir nicht sicher, ob ich verstehe, was Sie tun möchten, aber da Sie die @ event.time_zone speichern, können Sie

hinzufügen %Vor%

zu Ihrem datetime_select Formularfeld.

    
rapcal 24.10.2011 16:55
quelle
0

Wie wäre es mit so etwas:

%Vor%     
Adam Eberlin 26.09.2011 00:25
quelle
0

Ich habe gerade bemerkt, dass dies ein alter Beitrag ist, aber: Wenn ich Sie wäre, würde ich ein virtuelles Attribut verwenden, um das Datum des Veranstaltungsortes zu repräsentieren. Beispielsweise könnten Sie der Leistung adjusted_start_time ein Attribut hinzufügen.

    
Wilhelm 29.01.2012 14:59
quelle