加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用root的rails命名空间路由仅适用于开发

发布时间:2020-12-17 02:12:25 所属栏目:百科 来源:网络整理
导读:namespace :admin do root :to = "admin#index"end 我可以访问localhost:3000 / admin,它的工作原理. 当我部署到heroku时myapp.herokuapp.com/admin没有.它产生了这个 ActionController :: RoutingError(未初始化的常量Admin :: AdminController): 我的控
namespace :admin do 
  root :to => "admin#index"
end

我可以访问localhost:3000 / admin,它的工作原理.
当我部署到heroku时myapp.herokuapp.com/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选项).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读