ApplicationController的未定义方法`helper_method',Rails 5

时间:2016-08-26 17:28:08

标签: ruby-on-rails oauth-2.0 ruby-on-rails-5 doorkeeper bcrypt-ruby

我正在尝试使用门卫将oAuth2.0集成到我的rails-api应用程序中。但我一直得到这个错误,“针对ApplicationController的未定义方法`helper_method”,但却找不到一个如何解决它的明确解决方案。 bellow是我的application_controller.rb类,它有helper_method。我正在按照以下链接上的教程,任何帮助将不胜感激。

  

https://www.sitepoint.com/getting-started-with-doorkeeper-and-oauth-2-0/

class ApplicationController < ActionController::API

private 

    def current_user
        @current_user ||= User.find(session[:user_id]) if session[:user_id]
    end

    helper_method :current_user

end

2 个答案:

答案 0 :(得分:11)

Andy Gauge的回答是正确的;修复不正确。如果您希望包含Helpers模块,同时仍将应用程序保留为“rails-api”,那么只需包含模块

class ApplicationController < ActionController::API
  include ActionController::Helpers
end

答案 1 :(得分:2)

由于API没有视图,因此删除了helper_method方法。如果要将current_user方法添加到视图中,请改用ActionController :: Base。

ActionController included Modules on Github.你可以在这里看到,AbstractController :: Helpers不包含在Modules集合中。

在文章所基于的Rails 4中,该方法包含在ActionController :: Helpers中。如APIDock中所示。

解决方法:

#application_controller.rb
class ApplicationController < ActionController::Base