2013-07-31 40 views
0

我有一個用戶模型,它允許用戶提供自己的時區。用戶可以使用time_zone_select選擇自己的時區。因此,我們將在數據庫中存儲諸如Pacific Time (US & Canada)之類的內容。如何根據用戶的輸入更改Rails應用程序時區設置?

我的Rails 3應用程序的默認設置是使用Pacific Time (US & Canada)。所以所有的時間顯示都在這個時區。

我可以根據用戶時區更改時間顯示嗎?例如,用戶A將看到在他的時區Central Time (US & Canada)中顯示的所有時間,並且用戶B將始終看到London

謝謝大家。

回答

2

controllers/application.rb

before_filter :set_user_time_zone 

private 

def set_user_time_zone 
    Time.zone = current_user.time_zone if logged_in? 
end 

railscast

2

首先,您需要將列添加到您的用戶表,以保持選定的時區爲這個用戶(user.timezone應該是罰款)。 在表單中,您需要使用ActiveSupport的#time_zone_select來允許用戶選擇他們想要的時區。

最後,您需要在ApplicationController中的過濾器之前將當前會話的時區設置爲用戶的特定時區。

這裏是與遷移,局部視圖和應用控制器濾波器要旨:

https://gist.github.com/eladmeidar/6121183

相關問題