重构时出现未初始化常量错误 routes.rb

uninitialized constant error when refactoring routes.rb

我正在尝试使用命名空间重构我的路由文件。当我尝试访问路由时,出现错误 uninitialized constant Web::Admins

routes.rb:旧版本

scope path: '/web' do
     ...
     get 'admins/new' => 'web/admins#new', defaults: { format: :html }, as: :new_web_admins
     get 'admins' => 'web/admins#index', defaults: { format: :html }, as: :web_admins
     get 'admins/:id' => 'web/admins#show', defaults: { format: :html }, as: :show_web_admins
     post 'admins' => 'web/admins#create', defaults: { foramt: :html }, as: :create_web_admins
     patch 'admins/:id/edit' => 'web/admins#update', defaults: { format: :html }, as: :edit_web_admins
     delete 'admins/:id' => 'web/admins#destroy', defaults: { format: :html }, as: :destroy_web_admins
     ...

routes.rb:重构

namespace :web do
    namespace :admins do
      get 'new' => 'web/admins#new', defaults: { format: :html }#, as: :new_web_admins
      get '/' => 'web/admins#index', defaults: { format: :html }#, as: :web_admins
      get '/:id' => 'web/admins#show', defaults: { format: :html }#, as: :show_web_admins
      post '/' => 'web/admins#create', defaults: { foramt: :html }#, as: :create_web_admins
      patch '/:id/edit' => 'web/admins#update', defaults: { format: :html }#, as: :edit_web_admins
      delete '/:id' => 'web/admins#destroy', defaults: { format: :html }#, as: :destroy_web_admins
      post 'doit' => 'web/admins#doit', defaults: { format: :html }
    end
  end

app/controllers/web/admins_controller.rb

class Web::AdminsController
  ...
end

namespace :admins 需要像 /web/admins/ 这样的路线,所以它会寻找 Web::Admins::...

顺便考虑一下 RESTful 路线。按照他们的标准,你可以写:

namespace :web do
  resources :admins
end