3

在我的站点中,区域设置由附加到 URL 的查询参数确定(例如http://www.mysite.com/mypage?locale=en)。

before_filter :authenticate_user!在我的应用程序控制器中使用 devise with,但不知道如何传递 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
4

2 回答 2

12

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

def self.default_url_options
  { :locale => I18n.locale }
end

顺便说一句,如果有人能解释原因和区别,请做。

于 2012-09-27T13:59:45.377 回答
4

DeviseController 不继承自 ApplicationController,因此访问 default_url_options 的唯一方法是将其定义为 ApplicationController 上的类方法。

于 2013-09-22T00:31:20.037 回答