There are no routes, although there is one in rake routes

I get weird ActionController::RoutingError: No route matches . The route can be generated:

 > r = Rails.application.routes > r.generate controller: :items, action: :index, user_id:1 => ["/users/1/items", {}] 

And it is in rake routes :

 $ rake routes user_items GET /users/:user_id/items(.:format) items#index POST /users/:user_id/items(.:format) items#create new_user_item GET /users/:user_id/items/new(.:format) items#new edit_user_item GET /users/:user_id/items/:id/edit(.:format) items#edit user_item GET /users/:user_id/items/:id(.:format) items#show PUT /users/:user_id/items/:id(.:format) items#update DELETE /users/:user_id/items/:id(.:format) items#destroy (...) 

But I did not recognize him:

 r.recognize_path "/users/1/items" ActionController::RoutingError: No route matches "/users/1/items" 

My routes.rb :

 Sumo2::Application.routes.draw do resources :users do resources :items end (...) end 

Any ideas?

+6
source share
1 answer

Do you have an ItemsController class? Without this, your route will not be recognized. You may have been mistaken.

 irb(main):001:0> r = Rails.application.routes => #<ActionDispatch::Routing::RouteSet:0x1cbba00> irb(main):002:0> r.recognize_path "/users/1/items" ActionController::RoutingError: No route matches "/users/1/items" ... errors ... irb(main):003:0> class ItemsController; end # <----------< => nil irb(main):004:0> r.recognize_path "/users/1/items" => {:action=>"index", :controller=>"items", :user_id=>"1"} 
+8
source

Source: https://habr.com/ru/post/917873/


All Articles