2011-05-08 61 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"} 

谢谢,哈马尔!