如何将locale参数传递给Devise

dav*_*rac 3 ruby-on-rails internationalization devise

在我的站点中,语言环境由附加到URL的查询参数确定(例如http://www.mysite.com/mypage?locale=en).

我正在before_filter :authenticate_user!我的应用程序控制器中使用devise ,但无法确定如何传递locale参数来设计视图中的符号(如果我在显示后手动将其添加到视图URL,它确实显示了已翻译的视图,它只是传递我无法弄清楚的参数)

我将以下内容添加到我的应用程序控制器中,它没有做到这一点:

  before_filter :set_locale

  def set_locale
    I18n.locale = params[:locale] || I18n.default_locale
  end

  def default_url_options(options={})
    { locale: I18n.locale }
  end
Run Code Online (Sandbox Code Playgroud)

dav*_*rac 12

我找到了解决方案.显然,Devise需要像这样定义方法(而不像rails 文档状态):

def self.default_url_options
  { :locale => I18n.locale }
end
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果有人能解释原因和差异,请做.