Rails 4.1.5配置相对根路径后Active Admin无法加载Rich编辑器
你遇到的核心问题是Rich gem的静态资源加载路径没适配你设置的relative_url_root和assets.prefix。当你加上这些路径前缀后,Rich的JS、CSS及相关资源的引用URL没有自动带上/lince或/lince/assets前缀,浏览器找不到这些资源,编辑器自然就渲染不出来了。
下面是具体的排查和解决步骤:
1. 先确认资源加载失败的直接原因
打开浏览器开发者工具(按F12)切换到「网络」标签,刷新Active Admin页面。你大概率会看到Rich相关的JS/CSS文件返回404错误——这就是编辑器不显示的直接诱因。
2. 配置Rich适配相对URL根
创建或修改config/initializers/rich.rb文件,给Rich添加资产主机配置,让它适配你的路径前缀:
Rich.setup do |config| # 根据你的配置,这里设置为你的relative_url_root config.asset_host = '/lince' # 如果assets.prefix是/lince/assets,也可以尝试设置为'/lince/assets',看哪种能正确加载资源 end
这个配置会让Rich生成的资源引用URL自动带上/lince前缀,确保浏览器能定位到对应的文件。
3. 确保Rich资产被预编译
在config/initializers/assets.rb中把Rich的资产加入预编译列表:
Rails.application.config.assets.precompile += %w( rich/* )
然后执行资产预编译命令(开发环境也可以执行,确保资源被正确处理):
rake assets:precompile
完成后重启Rails服务器,让新的资产配置生效。
4. 手动在Active Admin中引入Rich资源
有时候Rich的资产不会自动被Active Admin的资产包包含,你可以手动引入:
- 在
app/assets/javascripts/active_admin.js中添加://= require rich/rich - 在
app/assets/stylesheets/active_admin.css.scss中添加:@import "rich/rich";
这样能确保Rich的核心JS和CSS在Active Admin页面中被正确加载。
为什么移除路径配置后能正常工作?
默认情况下,Rails的资产路径是根路径(/assets),Rich gem的资源引用都是基于这个根路径的,所以能正常加载。当你添加relative_url_root和assets.prefix后,资产的基础路径变成了/lince/assets,但Rich没有自动适配这个变化,导致资源URL错误,最终编辑器无法初始化。
内容的提问来源于stack exchange,提问作者Felipe Marcon

