2012-06-12 29 views
6

私は奇妙なActionController::RoutingError: No route matchesを取得します。ルートはレイクルートに1つありますが一致しません

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

そして、それは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 
(...) 

しかし、私、それが認識されていない:

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

マイroutes.rb

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

何か案は?

答えて

8

ItemsControllerクラスが定義されていますか?それがなければあなたのルートは認識されません。おそらくあなたはそれを間違って入力しました。

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"} 
関連する問題