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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:07:32