未找到门卫new_oauth_application_path

时间:2016-04-20 13:11:18

标签: ruby-on-rails ruby-on-rails-5 doorkeeper

我测试了新的rails 5 api。我想通过js客户端创建一个oauth2服务器。

我使用Doorkeeper来管理oauth2服务器。

在我的routes.rb中我有

resource_owner_authenticator do
  User.find_by_id(session[:user_id]) || redirect_to(new_user_session_url)
end

doorkeeper.rb

ActionView::Template::Error (undefined local variable or method `new_oauth_application_path' for #<#<Class:0x007fbf1f70c908>:0x007fbf1f72f8b8>)

当我转到&#39; http://localhost:3000/oauth/applications&#39;时,我收到了错误消息:

  get '/oauth/applications/:id(.:format)', to: 'doorkeeper/applications#show', as: 'edit_oauth_application'
  get '/oauth/applications(.:format)', to: 'doorkeeper/applications#index', as: 'root'

门卫不能完全使用导轨5吗?如果不是,你知道门卫这样的宝石吗?

我手动创建routes.rb中的路由

的示例:

{{1}}

现在我已经有了未定义的方法`flash&#39;&#34;。

2 个答案:

答案 0 :(得分:3)

在尝试在仅使用Rails 5 api的应用程序上使用门卫时,我偶然发现了同样的问题。

按照之前的建议将我的ApplicationController祖先改为ActionController::Base对我来说无效。经过深入挖掘后,我找到了解决方案。

简答doorkeeper不适用于仅支持api的应用,因为您可以看到herehere

我设法使其工作的方式是重新启用Rails 5的api-only选项剥离的所有中间件和帮助程序......

简而言之,添加

require "sprockets/railtie"

位于config/application.rb的顶部并设置

config.api_only = false

在同一个文件中,使门卫按预期加载。

即使现在您的应用程序加载了一堆先前被剥离的中间件,但仍然保留了API功能,并且控制器仍然是轻量级的,因为它们仍然继承自ActionController::API

答案 1 :(得分:0)

我通过ActionController :: Base更改ActionController :: API以使其工作。