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

Rails 6中能否使用.js.erb文件?ERB代码未被解析如何处理

Rails 6 .js.erb文件不生效问题解答

Rails 6完全支持使用.js.erb格式的文件,你的代码写法本身没有问题,ERB不执行是文件存放路径和处理链路配置的问题。

不生效的核心原因

Rails 6默认使用Webpacker作为JS打包工具,你存放文件的app/javascripts/(Rails 6默认对应路径为app/javascript/)目录默认归Webpacker管理,默认配置下Webpacker不会解析ERB语法,只有Sprockets(Rails传统静态资源处理工具)会默认处理ERB语法的静态资源文件。

两种可用解决方案

你可以根据自己的技术栈选择任意一种方式处理:

  • 方案1:走Sprockets处理链路
    把你的test.js.erb文件移动到app/assets/javascripts/custom/目录下,这个目录默认归Sprockets管理,会自动解析ERB语法。
    之后需要做两个配置:

    1. 在config/initializers/assets.rb中添加预编译规则:
    Rails.application.config.assets.precompile += %w( custom/test.js )
    
    1. 在需要引入该JS的页面或者全局布局文件中,通过以下标签引入:
    <%= javascript_include_tag 'custom/test' %>
    
  • 方案2:给Webpacker添加ERB解析能力
    如果你希望继续把JS文件放在Webpacker管理的app/javascript/目录下,可以手动配置ERB解析loader:

    1. 执行命令安装loader:
    yarn add rails-erb-loader
    
    1. 打开config/webpack/environment.js,添加如下配置:
    const erb = require('rails-erb-loader')
    environment.loaders.prepend('erb', erb)
    

    配置完成后重启服务,你现有路径下的test.js.erb里的ERB代码就可以正常解析执行了。

额外注意

如果你是要写响应Ajax请求的动态JS视图,不需要走上面两种配置,直接把对应的.js.erb文件放在app/views/对应控制器的视图目录下即可,Rails会自动解析渲染返回给前端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:09:03