0

RSpec-2 を使用してコントローラーをテストしていますが、奇妙な動作が見られます。基本的に、 Railscasts #71と同じことをしています。

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にルートの一部ではなく、 に書き込まれるべきですparamspost私の問題は、どのメソッドが呼び出されているかわからないことから始まります。

私の Gemfile.lock はここにあります。


編集

そして、私の routes.rb はここにあります。

4

1 に答える 1

0

アイデアを跳ね返すのが良い場合もあります。私の問題は、ネストされたルートで基本的に次のことを行っていることです。

resources :projects do
    resources :deliverables
end

エラーメッセージは私を失望させました、本当の問題は私が提供しなかったことでしたproject_id. 私はそれを修正しました

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

それ以外の

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

ありがとう、ハンマー!

于 2011-05-09T10:30:41.703 に答える