我正在使用Ruby on Rails 4,我想以正確的方式處理cookie中的數據。也就是說,當我存儲的cookie數據般(GMT-06:00) Central Time (US & Canada)
處理與時區的cookie數據時遇到問題
cookies.permanent[:time_zone] = "(GMT-06:00) Central Time (US & Canada)"
那麼它存儲%28GMT-06%3A00%29+Central+Time+%28US+%26+Canada%29
cookie的內容。
這樣,當我在我的代碼使用cookies[:time_zone]
數據
Time.use_zone(cookies[:time_zone], &block)
然後我得到ArgumentError Invalid Timezone: (GMT-06:00) Central Time (US & Canada)
。
我認爲問題是由於事實上cookies[:time_zone]
數據是從「原樣」(%28GMT-06%3A00%29+Central+Time+%28US+%26+Canada%29
)中讀取的,因此它在Time.use_zone
中調用時會生成錯誤。
我該如何讀取/寫入cookie數據?
@馬特·約翰遜評論後更新
我 「hadcode」 是
time_zone = cookies[:time_zone] || Time.zone
,這樣我可以使用time_zone
變量我的問題。然而,我注意到,Time.zone
回報總是
(GMT-06:00) Central Time (US & Canada)
# instead of "Central Time (US & Canada)"
這是問題:在我的「硬編碼」的時候,Cookie是nil
然後Time.zone
應該返回正確的價值爲我的事,那就是Central Time (US & Canada)
。
所以我的問題變成:我應該如何處理這個問題,以便正確設置time_zone
變量?
注:本Time.zone
documentation狀態,該方法
返回當前請求時區,如果這已設置 (經由::區=)。如果尚未爲當前請求設置Time.zone,則 將返回config.time_zone中指定的時區。
,在我application.rb
文件我已經設置
`config.time_zone = 'Central Time (US & Canada)'`
你從哪裏開始閱讀該值? –
我正在從默認的Ruby on Rails設置中讀取它。 – Backo
這不能回答我的問題。請顯示您正在使用的代碼*以讀取時區設置字符串。 –