2013-11-28 27 views
1

當我測試/api/ping它如預期的那樣工作輸出"PONG"。不過,我期待一個/api/users/:user_id的JSON響應,但它沒有找到,並且名稱空間中的before塊未被調用。葡萄API端點「未找到」即使我試圖定義它

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}" } 

我在做什麼錯?

回答

0

雖然葡萄文檔建議它是有效的,但我無法使用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