使用devise和rails时,基于每个用户设置区域设置3

我刚刚通过我的一个应用程序将身份validation从authlogic转换为设计。 总的来说,这是非常直截了当的,但有一个问题,我找不到一个简单的解决方案。

在应用程序中,用户可以选择他们的区域设置。 然后,只要他们登录,他们就会以他们选择的语言查看应用程序。 以前,我只需在UserSessions控制器的create方法中设置区域设置即可。

使用Devise,所有控制器都会自动设置,这很棒。 我知道我可以创建一个扩展DeviseController的自定义控制器,并按照我的理解这样做,但这意味着我还需要创建所有的视图以便在我看来有点过头了只需要运行一行额外的代码。

是否有更简单的方法来指定要在成功的设计认证上运行的代码?

我找到了我在这里寻找的解决方案

因为我只是想在用户登录时为其设置语言环境,所以我只需要将以下方法添加到我的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 

你有没有执行rails generate devise:views ? 这将为您输出Devise视图文件,然后您应该能够将它们移动到与新的扩展Devise控制器名称匹配的位置。

Devise可识别语言环境,这意味着您的视图应自动为您加载语言翻译。

您需要做的就是在rails应用程序的根“locales”文件夹中为您希望支持的每种语言翻译提供“devise。[:locale] .yml”文件。

Devise wiki提供了大量的语言环境翻译,可以为您节省一些工作:

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