Ruby on Rails 6+视图中jQuery失效,Chrome报语法错误求助
嘿,这个问题我刚好处理过,咱们一步步排查解决:
1. 先修复最直接的语法错误
你的x.js.erb代码里存在明显的语法问题——jQuery选择器的字符串必须用引号包裹!
错误代码:
$(#new).hide();
正确写法:
$('#new').hide();
这正是控制台抛出Uncaught SyntaxError: Unexpected identifier的核心原因,JavaScript解析器无法识别裸写的#new,必须把选择器字符串放在单引号或双引号里。
2. 确认jQuery在Rails 6+中正确引入
Rails 6及以上版本默认使用Webpack作为前端打包工具,jQuery不再是框架默认内置的依赖。所以即使修复了语法错误,你可能还会遇到$ is not defined的问题(如果还没配置过的话),配置步骤如下:
- 安装jQuery依赖:
在项目根目录的终端中运行:yarn add jquery - 配置Webpack环境:
打开config/webpack/environment.js文件,添加jQuery的全局注入配置:const { environment } = require('@rails/webpacker') const webpack = require('webpack') // 全局注入jQuery,让$和jQuery在所有模块中可用 environment.plugins.prepend('Provide', new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery' }) ) module.exports = environment - 重启开发服务:
如果你已经启动了rails s,需要重启它,确保Webpack的配置生效。
3. 验证与额外排查
完成上述两步后,刷新页面触发对应的js.erb请求,应该就能正常执行隐藏元素的逻辑了。如果仍有问题,可以检查:
- 触发请求的元素是否正确指定了js格式(比如表单添加
data: { remote: true },链接添加format: :js) - 用
console.log($('#new'))在x.js.erb中打印,确认页面中确实存在ID为new的元素 - 查看Chrome控制台是否有其他报错信息,针对性排查
内容的提问来源于stack exchange,提问作者belin
相关产品推荐
相关产品推荐

