2013-08-05 58 views
0

我正在爲Rails應用程序構建葡萄api。我正在用rspec請求規格來測試它。製作後的路線是這樣,當我遇到的問題:葡萄api忽略PUT/POST參數

resources :events do 
    segment '/:event_id' do 
    resources :tickets do 
     post do 
     event = current_user.events.find params[:event_id] 
     ...#do sth with event using params[:tickets_ids] 

相應的規範:

it "should should return the JSON hash of validated tickets" do 
    post "/api/mobile/#{version}/events/#{event.id}/tickets/", { tickets_ids: [1,2] }, credentials 
    response.should be_success 
    JSON.parse(response.body).should be_kind_of Hash 
end 

葡萄「控制器」是不是能看到哪些不發送作爲的一部分的任何PARAMS網址。打印params [:tickets_ids]時,它是零。使用get請求時,我沒有這個問題。使用curl手動發送請求時,我能夠重現此問題。嵌套的資源路由也不是問題,因爲它的行爲與頂級路由相同。

我在github上發現了以下問題,但應用給定的猴子補丁不起作用,並在啓動時中斷服務器。 https://github.com/intridea/grape/issues/417

我使用寶石及其以下版本,並且由於相關性衝突,我無法對它們進行升級:

grape (0.2.1.1) 
rails(3.0.7) 
rspec-rails (2.6.1) 

任何幫助和提示,將不勝感激。

+1

如果記得應該有一個報頭中設置的Content-Type具有值應用/ X- www-form-urlencoded –

+0

謝謝你的提示。這完全是關於設置正確的Content-Type標頭。它現在是固定的。 – pawurb

+0

希望能夠接受它,如果你願意接受它作爲解答這個問題的答案。謝謝。 –

回答

1

如果記得應該有一個報頭中設置的Content-Type具有值應用程序/ x-WWW窗體-urlencoded