我正在将门卫升级到6.7,我遇到use_doorkeeper问题:
我跟着migration instructions并执行了以下操作:
升级前的路线:
scope "(:locale)", :locale => /.{2}/ do
...
mount Doorkeeper::Engine => '/oauth', as: 'doorkeeper'
...
end
升级后的路线:
scope "(:locale)", :locale => /.{2}/ do
...
use_doorkeeper
...
end
现在我在视图中从这一行(和其他人)收到错误:
<td><%= link_to application.name, [:oauth, application] %></td>
路由错误
没有路线匹配{:action =&gt;“show”,:controller =&gt;“doorkeeper / applications”,:locale =&gt;#&lt;门卫::应用程序ID:5,名称:“我的应用程序”,uid:“xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...”,秘密:“xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...”,redirect_uri:“http://www.myapp.com”,created_at:“2013-08- 26 14:33:38“,updated_at:”2013-08-26 14:33:38“&gt;}
看门人应用程序似乎进入了语言环境参数。
有什么想法吗?
答案 0 :(得分:3)
如果您已按照rails guides进行操作,则ApplicationController
中会显示以下内容。
before_action :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
def default_url_options(options={})
{ locale: I18n.locale }
end
但是您的门卫控制器不会继承您的ApplicationController
。所以,如果我是你,我会把它解决问题
module LocaleConcern
extend ActiveSupport::Concern
included do
before_action :set_locale
end
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
def default_url_options(options={})
{ locale: I18n.locale }
end
end
然后,您可以按照正常方式在include
ApplicationController
中config.to_prepare do
Doorkeeper::ApplicationController.send :include, LocaleConcern
end
这样做。要将它添加到门卫,有很多选项,但你可以做的一件事是将以下内容添加到config / application.rb
{{1}}