虽然在rake路线中有一条路线,但没有路线匹配

mrz*_*asa 6 routes ruby-on-rails

我得到奇怪ActionController::RoutingError: No route matches.可以生成路线:

> r = Rails.application.routes
> r.generate controller: :items, action: :index, user_id:1
  => ["/users/1/items", {}] 
Run Code Online (Sandbox Code Playgroud)

它在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
(...)
Run Code Online (Sandbox Code Playgroud)

但我不承认:

r.recognize_path "/users/1/items"
ActionController::RoutingError: No route matches "/users/1/items"
Run Code Online (Sandbox Code Playgroud)

我的routes.rb:

Sumo2::Application.routes.draw do
  resources :users do
    resources :items
  end
  (...)
end
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

jdo*_*doe 8

你有ItemsController班级定义吗?没有它,您的路线将无法识别.也许你拼错了它.

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"}
Run Code Online (Sandbox Code Playgroud)