2010-11-27 68 views
0

我剛剛通過我的一個應用程序將身份驗證從authlogic轉換爲設計。總的來說,這一直是令人驚訝的直接做,但有一個問題,我找不到一個簡單的解決方案。當使用設計和導軌時,在每個用戶的基礎上設置語言環境3

在應用程序中,用戶可以選擇其區域設置。然後,只要他們登錄,他們就會以他們選擇的語言查看應用程序。以前,我只是通過在UserSessions控制器的create方法中設置區域設置來完成此操作。

隨着設計,所有的控制器都自動設置,這是偉大的。我知道我可以創建一個自定義控制器來擴展DeviseController並像這樣做,但是據我的理解,這意味着我還需要創建所有視圖以便與它一起使用,當我只需要運行一行額外的代碼。

是否有更簡單的方法來指定某些代碼在成功的設計認證上運行?

回答

2

我發現我一直在尋找here

正如我只是想解決方案設置用戶登錄時的語言環境,我所需要的只是將以下方法添加到我的ApplicationController中

def after_sign_in_path_for(resource_or_scope) 

    if resource_or_scope.is_a?(User) && resource_or_scope.locale != I18n.locale 
    I18n.locale = resource_or_scope.locale 
    end 

    super 
end 
0

你執行了rails generate devise:views嗎?這將爲您輸出Devise視圖文件,然後您應該能夠將它們移動到與您的新擴展Devise控制器名稱相匹配的位置。

設計是區域意識,這意味着您的意見應該自動爲您加載語言翻譯。

您需要做的是在您的Rails應用程序的根「locales」文件夾中爲您希望支持的每種語言翻譯提供一個「devise。[:locale] .yml」文件。

的設計wiki有一堆已提供現場翻譯給你節省一些工作:

https://github.com/plataformatec/devise/wiki/I18n

+0

感謝您的迴應。回顧我的問題,我認爲我沒有特別好地表述它,但產生意見是我試圖避免的 - 僅僅是因爲我所擁有的問題似乎並沒有保證。我找到了我正在尋找的解決方案,並在此發佈,以防其他人有用 – Addsy 2010-11-27 17:58:01