You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 5拆分多路由文件提示uninitialized constant General错误如何解决

问题原因

Rails 应用启动时,config/routes.rb 的加载时机远早于自动加载机制(autoload_paths)的初始化完成,你配置的路由目录自动加载规则此时还未生效,因此无法识别General常量。

解决方案

方案1:快速适配现有代码

直接在路由文件顶部手动引入对应模块文件,跳过自动加载即可:

# config/routes.rb 顶部新增这一行
require_relative './routes/general'

Rails.application.routes.draw do
  root to: 'summary#index'
  extend General
end

修改后无需调整其他配置,重启应用即可生效。

方案2:使用Rails原生路由拆分(更推荐)

Rails 5.0+ 已经原生支持多路由文件拆分,不需要自己封装模块,写法更简洁不易出错:

  1. 调整/config/routes/general.rb内容,移除模块包裹,直接写路由逻辑:
# 直接保留路由内容即可,不需要定义模块
devise_for :users, controllers: { sessions: 'users/sessions' }
  1. 修改config/routes.rb,用原生draw方法加载拆分的路由文件:
Rails.application.routes.draw do
  root to: 'summary#index'
  draw :general
end
  1. 可以删除application.rb中添加的config.autoload_paths相关配置,无需额外配置自动加载。

内容的提问来源于stack exchange,提问作者Ben Bagley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:12:02