2012-06-12 10 views
6

Dostaję się dziwnie ActionController::RoutingError: No route matches. Trasa może być generowane:Żadna trasa nie pasuje, chociaż jest jedna w trasach prowizji

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

I to w 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 
(...) 

Ale to nie jest rozpoznawane:

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

My routes.rb:

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

Jakieś pomysły?

Odpowiedz

8

Czy masz zdefiniowaną klasę ItemsController? Bez niego twoja trasa nie zostanie rozpoznana. Być może błędnie to napisałeś.

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