【问题标题】:No route matches although there is one in rake routes尽管 rake 路线中有一条路线,但没有路线匹配
【发布时间】:2012-06-12 10:01:20
【问题描述】:

我很奇怪ActionController::RoutingError: No route matches。可以生成路由:

> r = Rails.application.routes
> r.generate controller: :items, action: :index, user_id:1
  => ["/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 "/users/1/items"
ActionController::RoutingError: No route matches "/users/1/items"

我的routes.rb

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

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails routes


    【解决方案1】:

    您是否定义了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"}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多