我有Event
模型的編輯視圖,其中name
,start_time
和end_time
字段。我的看法是,看起來大致是這樣一種形式:避免在Rails視圖中丟失時區的最佳方法是什麼?
# ...
# form with:
# - event name
# - datetime_select for event start_time (in business's local time zone)
# - datetime_select for event end_time (in business's local time zone)
現在,這裏的問題:start_time
和end_time
附加了一個時區,但是當我們渲染認爲浪費時間,因爲datetime_select不包括時區的字段。結果是我們有一個「UTC時間」,實際上它是剝離其時區的本地時間。
總括,情況是這樣的。當我們在視圖中的窗體,然後立即提交,而不做任何改變:
db time: 2011-05-15 @ 1100 UTC
converted to local time: 2011-05-15 @ 0600 CDT
time stored in view: 2011-05-15 @ 0600 UTC (time zone info lost)
time posted back to db: 2011-05-15 @ 0600 UTC
注意儲存的時間爲1100 UTC原本不過是現在0600 UTC,即使我們沒有做任何改變。這是一個嚴重的錯誤。
我們可以在這裏採取多種方法。發佈視圖時避免丟失時區的最明智的方法是什麼? (請注意,模型可能會以發佈表單之外的方式進行更新 - 例如通過API。)
彼時我採取的是不同的方法,但答案的,這是最接近我的實際解決方案,從而爲接受,我會記住這。 – 2011-07-30 16:53:33