2011-05-08 17 views
0

我正在使用RSpec-2來測試我的控制器,並且看到奇怪的行爲。 基本上我在Railscasts #71Railscasts#71:試圖在post方法中傳遞參數時發生路由錯誤

describe DeliverablesController do 
    describe "responding to POST create" do 
    describe "with valid parameters" do 
     it "should pass the params to the deliverable item" do 
     post :create, :deliverable => {:title => "Some Deliverable"} 
     assigns[:deliverable].title.should == "Some Deliverable" 
     end 
    end 
    end 
end 

這將導致以下錯誤做一樣的:

1) DeliverablesController responding to POST create with valid parameters should pass the params to the deliverable item 
    Failure/Error: post :create, :deliverable => {:title => "Some Deliverable"} 
    ActionController::RoutingError: 
    No route matches {:deliverable=>{:title=>"Some Deliverable"}, :controller=>"deliverables", :action=>"create"} 

顯然:deliverable不應該是路線的一部分,但寫入params。我的問題始於不確定調用哪個方法。

我的Gemfile.lock可以找到here


編輯

而我的routes.rb可以發現here

+1

你能告訴我們你的路線嗎? – hammar 2011-05-08 22:53:12

回答

0

有時候反思一下是很好的:我的問題是我在一個嵌套的路線中,基本上做了以下工作。

resources :projects do 
    resources :deliverables 
end 

錯誤信息讓我失望,真正的問題是我沒有提供project_id。我固定它做

post :create, :project_id => 11, :deliverable => {:title => "Some Deliverable"} 

,而不是

post :create, :deliverable => {:title => "Some Deliverable"} 

謝謝,哈馬爾!

相關問題