Ruby on rails 两种资源之间的路线存在无法解释的差异

Ruby on rails 两种资源之间的路线存在无法解释的差异,ruby-on-rails,ruby-on-rails-4,routes,Ruby On Rails,Ruby On Rails 4,Routes,在Rails 4中,我为用户和组织定义了相同的路由: Rails.application.routes.draw do # Static pages root 'static_pages#home' get 'hello' => 'static_pages#hello' get 'partner' => 'static_pages#partner' # Message

在Rails 4中,我为用户和组织定义了相同的路由:

Rails.application.routes.draw do

  # Static pages
  root                        'static_pages#home'
  get 'hello'             =>  'static_pages#hello'
  get 'partner'           =>  'static_pages#partner'

  # Messages contact form
  get 'contact'           =>  'messages#new', as: 'contact'
  post 'contact'          =>  'messages#create'

  # Users
  get 'signup'            =>  'users#new'
  resources :users
  get 'admins'            =>  ‘users#index_adm'
  get 'unactivated'       =>  ‘users#index_unactivated'

  # Organizations
  resources :organizations

  # Sessions (for remembering log in log out)
  get    'login'          => 'sessions#new'
  post   'login'          => 'sessions#create'
  delete 'logout'         => 'sessions#destroy'

  # Account activation (sends email and uses edit method to change activation status)
  resources :account_activations, only: [:edit]

  # Password reset
  resources :password_resets,     only: [:new, :create, :edit, :update]

end
但是当我通过
rake routes
检查时,路径/路由不同:

      signup GET    /signup(.:format)                users#new
       users GET    /users(.:format)                 users#index
             POST   /users(.:format)                 users#create
    new_user GET    /users/new(.:format)             users#new
  edit_users GET    /users/:id/edit(.:format)        users#edit
        user GET    /users/:id(.:format)             users#show
             PATCH  /users/:id(.:format)             users#update
             PUT    /users/:id(.:format)             users#update
             DELETE /users/:id(.:format)             users#destroy

organizations GET   /organizations(.:format)         organizations#index
              POST  /organizations(.:format)         organizations#create
new_organization  GET /organizations/new(.:format)      organizations#new
edit_organization GET /organizations/:id/edit(.:format) organizations#edit
              GET    /organizations/:id(.:format)    organizations#show
              PATCH  /organizations/:id(.:format)    organizations#update
              PUT    /organizations/:id(.:format)    organizations#update
              DELETE /organizations/:id(.:format)    organizations#destroy
请特别注意用户的最后四行和组织的最后四行。这里,
users#update PATCH
请求与“用户路径”相关,而
organizations#update PATCH
请求与
edit#u organization
路径相关。我希望组织路线与用户路线相同。我跟随Hartl的railstutorial.org建立的用户,我自己也加入了组织。当尝试更新组织的记录时,路由的差异会导致问题


我做了哪些不同的操作,使组织路径与用户路径不相似?

修补和放置操作与
编辑组织
编辑用户
路径无关。使用
resources
rails为修改资源的操作生成路由
[PUT,PATCH,DELETE]
去掉资源的单数名称(
organization\u path


我相信您可能只是读取了
rake routes
的输出错误,或者只是输出错误。除非rails抱怨组织路径不存在。

问题消失了。这可能是我工作的云程序的问题。重新启动我的浏览器后,问题突然消失了…

能否显示完整的routes.rb文件?因此,组织路径似乎不存在,而用户路径确实存在。问题中添加了完整的routes文件。您运行的rails版本是什么?我刚刚在4.2.0上尝试了你的routes.rb文件,但无法重新创建该问题。下面是我对这些路由的输出:我正在运行Rails 4.2.1。您的输出确实是我希望的。但是,为什么用户和组织之间的输出不同,为什么在路由中,第一个“列”中没有“组织”,而有“用户”?它导致的问题是:当我提交一个组织的编辑表单时,它会产生错误:
没有路由匹配[PATCH]“/organization.1”
。当我单击删除记录时,它会生成错误
没有路由匹配[DELETE]“/organization.10”
。嗯,这很奇怪-您正确定义了路由。如果您将表单添加到问题中,并尝试从rails控制台(
$rails s
)运行
app.organization\u path(id:1)
),可能会有所帮助。输出应为“/organizations/1”