1

当我测试/api/ping它按预期输出时"PONG"。但是我希望得到一个 JSON 响应,/api/users/:user_id但它没有找到,并且没有调用命名空间中的 before 块。

class Users < Grape::API
  namespace ':user_id' do
    before do
      @user = User.find(params[:user_id])
    end

    get do
      @user
    end
  end
end

class API < Grape::API
  format :json
  default_format :json
  prefix 'api'

  get 'ping' do
    'PONG'
  end

  mount Users => 'users'
end

在 rspec 测试中:

let(:user) { create(:user) }
before { get "/api/users/#{user.id}" }

我究竟做错了什么?

4

1 回答 1

0

尽管 Grape 文档表明它是有效的,但我根本无法使用mount GrapeSubClass => 'prefix'语法使您的示例工作,因此放弃了。

但是,如果我对您的主要 API 类进行以下简单更改,一切似乎都有效:

class API < Grape::API
  format :json
  default_format :json
  prefix 'api'

  get 'ping' do
    'PONG'
  end

  # mount second API class in a namespace
  namespace 'users' do
    mount Users
  end
end
于 2013-11-28T20:36:00.617 回答