сбой assert_route с хорошим маршрутом - PullRequest
1 голос
/ 12 марта 2012

Я пишу функциональный тест, но он не проходит со следующей ошибкой:

1) Failure:
test: routing should route GET /categories/1/inventory_items/2/edit to/from {:action=>"edit", :controller=>"inventory_items", :category_id=>"1", :id=>"2"}. (InventoryItemsControllerTest)
    []:
No route matches "/categories/1/inventory_items/2/edit"

с маршрутом:

resources :categories, :constraints => lambda { |request| Category.exists?(request.params['category_id']) } do
  resources :inventory_items
end

и маршрутами моего рейка:

      category_inventory_items GET    /categories/:category_id/inventory_items(.:format)          inventory_items#index
                               POST   /categories/:category_id/inventory_items(.:format)          inventory_items#create
   new_category_inventory_item GET    /categories/:category_id/inventory_items/new(.:format)      inventory_items#new
  edit_category_inventory_item GET    /categories/:category_id/inventory_items/:id/edit(.:format) inventory_items#edit
       category_inventory_item GET    /categories/:category_id/inventory_items/:id(.:format)      inventory_items#show
                               PUT    /categories/:category_id/inventory_items/:id(.:format)      inventory_items#update
                               DELETE /categories/:category_id/inventory_items/:id(.:format)      inventory_items#destroy

Я попытался создать Category объект с :id, равным 1, но все равно не получилось.Я сделал puts на своем маршруте, а хэш params равен {}!Я использую средство сопоставления со следующим образом:

should route(:get, "/categories/1/inventory_items/2").to(:action => "show", :controller => "inventory_items", :category_id => 1, :id => 2)

, и когда я делаю puts внутри средства сопоставления, params правильно заполняется:

{:action=>"show", :controller=>"inventory_items", :category_id=>"1", :id=>"2"}

Любая помощь приветствуется, спасибо!

...