11

我正在尝试使用门卫将 oAuth2.0 集成到我的仅 rails-api 应用程序中。但我不断收到此错误,“ApplicationController 的未定义方法 `helper_method'”,但找不到有关如何解决它的明确解决方案。下面是我的 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
4

2 回答 2

18

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

class ApplicationController < ActionController::API
  include ActionController::Helpers
end
于 2016-09-29T03:05:53.867 回答
2

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

ActionController 包含 Github 上的模块。您可以在这里看到 AbstractController::Helpers 不包含在 Modules 集合中。

在本文所基于的 Rails 4 中,该方法包含在 ActionController::Helpers 中。正如在APIDock中看到的那样。

解决方法:

#application_controller.rb
class ApplicationController < ActionController::Base
于 2016-08-26T19:15:03.703 回答