Railscasts # 71: Ошибка маршрутизации при попытке передать параметры в методе post - PullRequest
0 голосов
/ 09 мая 2011

Я использую 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 не должно быть частьюмаршрута, но записано в params.Моя проблема начинается с того, что я не уверен, какой метод post вызван.

Мой Gemfile.lock можно найти здесь .


РЕДАКТИРОВАТЬ

А мой route.rb можно найти здесь .

1 Ответ

0 голосов
/ 09 мая 2011

Иногда полезно отказаться от идей: моя проблема заключалась в том, что я нахожусь во вложенном маршруте, в основном выполняя следующее.

resources :projects do
    resources :deliverables
end

Сообщение об ошибке сбило меня с толку, реальная проблема заключалась в том, что я не предоставил project_id. Я исправил это, выполнив

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

вместо

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

Спасибо, Хаммар!

...