在我的网站中,区域设置由附加到网址的查询参数决定(例如http://www.mysite.com/mypage?locale=en)。
我正在我的应用程序控制器中使用before_filter :authenticate_user!
设计,但无法确定如何传递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
答案 0 :(得分:12)
我找到了解决方案。显然,Devise需要像这样定义方法(而不像rails documentation状态):
def self.default_url_options
{ :locale => I18n.locale }
end
顺便说一句,如果有人能解释原因和差异,请做。
答案 1 :(得分:4)
DeviseController不从ApplicationController继承,因此访问default_url_options的唯一方法是在ApplicationController上将其定义为类方法。