2

我有一个不从应用程序控制器继承的 API 控制器。我正在尝试包含 respond_to 方法并得到一个方法未定义的错误......所以我需要在顶部的 actionpack,如下所示:

require 'actionpack'

class Api::V1::UsersController < Api::ApiController
  version 1

  doorkeeper_for :all
  respond_to :json

  def show
    respond_with current_user.as_json(except: :password_digest)
  end
end

我得到了以下信息:

LoadError(无法加载此类文件--actionpack):app/controllers/api/v1/users_controller.rb:1:in `'

我的 Gemfile 和 Rails 4.1.2 中已经有了gem 'actionpack'(这是 Rails 4 应用程序的一部分)

4

2 回答 2

6

呸,我才意识到我没有添加下划线,如下所示:

require 'action_pack'
于 2014-07-22T00:30:42.767 回答
0

您想将action_pack模块混入您的 ApiController。为此,您include不需要require。如果你在 Rails 中 action_pack 已经加载,如果没有并且你已经捆绑了 action_pack gem,那么需要它。然后你需要:

class Api::V1::UsersController < Api::ApiController
  include ActionController::MimeResponds

ActionController::MimeResponds模块将混合到您的控制器中,现在该respond_to方法将可供它使用。

阅读来源,卢克

于 2014-07-22T00:47:02.287 回答