Rails 7 出现/stylesheets/application路由RoutingError报错如何修复
Rails 7 引入Bootstrap后样式路由报错修复
问题表现
在/app/assets/stylesheets/application.scss中添加@import "bootstrap";引入语句后,项目功能运行正常,但持续抛出以下错误:
ActionController::RoutingError (No route matches [GET] "/stylesheets/application"):
根因
该错误本质是Rails 7资产路径解析异常,通常由静态写死样式引入路径、资产清单配置缺失、预编译配置不匹配三类原因导致。
修复方案
按顺序排查以下配置项即可解决:
- 检查布局文件的样式引入标签
打开app/views/layouts/application.html.erb,禁止直接写死静态资源路径,必须使用Rails内置的资产辅助方法渲染标签:
错误写法:
正确写法:<link rel="stylesheet" href="/stylesheets/application"><%= stylesheet_link_tag "application", "data-turbo-track": "reload" %> - 补全资产清单配置
打开app/assets/config/manifest.js,确认存在样式目录的关联声明,缺失则直接补全://= link_tree ../images //= link_tree ../builds //= link_directory ../stylesheets .css - 校验Bootstrap安装与预编译配置
如果使用cssbundling-rails管理前端依赖,先执行命令安装正确的Bootstrap依赖:
之后清除旧的缓存资产,重启服务即可:yarn add bootstrap @popperjs/corerails assets:clobber rails server - 适配Propshaft资产处理器配置
如果项目使用Propshaft替代默认Sprockets,需要在config/initializers/assets.rb中添加scss文件预编译声明:Rails.application.config.assets.precompile += %w( application.scss )
内容的提问来源于stack exchange,提问作者MimiValsi
相关产品推荐
相关产品推荐

