ApplicationController 的未定义方法“helper_method”,Rails 5

undefined method `helper_method' for ApplicationController, Rails 5

我正在尝试将 oAuth2.0 集成到我的 rails-api 应用程序中,使用门卫。但是我不断收到此错误,"undefined method `helper_method' for ApplicationController",但仍找不到明确的解决方案。下面是我的 application_controller.rb class,其中有 helper_method。我正在关注下面的 link 教程,如有任何帮助,我们将不胜感激。

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

因为 API 没有视图,所以 helper_method 方法已被删除。如果您想将 current_user 方法添加到视图,请改用 ActionController::Base。

ActionController included Modules on Github. 您可以在这里看到 AbstractController::Helpers 未包含在模块集合中。

在文章所依据的Rails4中,该方法被包含在ActionController::Helpers中。正如在 APIDock.

中看到的

解决方法:

#application_controller.rb
class ApplicationController < ActionController::Base

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

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