ruby-on-rails – 使用root的rails命名空间路由仅适用于开发
namespace :admin do root :to => "admin#index" end 我可以访问localhost:3000 / admin,它的工作原理. ActionController :: RoutingError(未初始化的常量Admin :: AdminController): 我的控制器实际上是AdminController,而不是Admin :: AdminController,我不太确定区别是什么或如何解决这个问题. 同样,它都在本地工作. 解决方法
您可以在rake路由输出中看到此命名空间路由使用的路径:controller => “管理/管理员”.在查找控制器类时,它将admin / admin转换为Admin :: AdminController.因此,命名空间路由的控制器通常位于app / controllers / namespace_name目录下,并包含在NamespaceName模块中.在您的情况下,它应该是app / controllers / admin / admin_controller.rb中定义的Admin :: AdminController类.
虽然,为什么你的配置在开发中运行良好但在生产模式中中断(我试过并成功地再现它)真的很有趣.我相信它与生产模式下的加载和缓存类有关,因为在config / environments / development.rb中设置config.cache_classes = true会导致它在开发模式下中断. 正如zoltarSpeaks所说,它应该是root:to => “admin#index”而不是root:to => “管理#指数”. 另外需要注意的是,当存在多个相关控制器时,通常会使用路由的名称空间.如果您只需要单个AdminController,您可以像这样配置您的路由: resources :admin,:only => :index 在这种情况下,不需要进行其他更改(如果您希望除索引之外还有其他默认操作,则只删除:only选项). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |