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

Rails 7使用javascript_include_tag加载特定页面JS时触发资产管道错误

问题原因及解决步骤

核心错误点

你给javascript_include_tag传了完整的文件系统路径,但Rails资产管道不识别这种写法,而且默认不会自动预编译app/javascript目录下的非入口级JS文件。

具体解决方法

  1. 修正标签路径
    把视图里的代码改成:
<%= javascript_include_tag 'custom/feature/categories' %>

不用写app/javascript前缀,也不需要加.js后缀,Rails会自动从资产源目录(包含app/javascript)里匹配对应文件。

  1. 配置资产预编译
    打开config/initializers/assets.rb,添加一行让Rails预编译这个JS文件:
Rails.application.config.assets.precompile += %w( custom/feature/categories.js )

默认情况下Rails只预编译application.js这类入口文件,自定义的单独JS文件需要手动加入预编译列表。

  1. 确认资产路径配置(可选)
    检查config/application.rb里是否有以下配置(Rails7默认已添加,无需修改):
config.assets.paths << Rails.root.join('app/javascript')

这行代码是告诉Rails资产管道要扫描app/javascript目录下的文件。

  1. 重启服务器
    开发环境直接重启Rails服务器即可让配置生效;生产环境需要先执行rails assets:precompile,再重启服务。

额外提醒

之前你是通过application.js的import引入该文件,说明它是模块化的代码,单独加载时要确保它依赖的模块已经加载,或者把它改成独立可运行的代码,避免出现依赖缺失的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 22:37:48