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

Rails UJS响应未命中目标div,js.erb存在什么错误?

.js.erb代码错误定位与修正

报错产生的底层原因

页面抛出的“private fields are not currently supported”错误,本质是远程返回的js.erb脚本本身存在语法错误,无法被浏览器JS引擎正常解析。Rails UJS执行远程返回脚本时,会将脚本挂载到应用全局JS上下文运行,因此错误堆栈会关联到应用打包的JS文件,不会单独标注是远程返回内容的问题;脚本连语法校验都通不过,自然无法执行DOM插入逻辑,页面也就看不到预期渲染的HTML块。

具体错误点

对照原始js.erb代码$(div#afamilis').append('<%= j render('afamily') %>'),存在两处直接触发解析失败的问题:

  • 选择器未被包裹为合法JS字符串
    div#afamilis是CSS选择器,必须以字符串形式作为参数传入jQuery选择器。代码中省略了开头的单引号,JS引擎解析时会把div识别为未声明的标识符,紧随其后的#会被按照ES2022类私有字段的语法规则解析,即尝试访问div对象的私有成员afamilis,直接触发私有字段不支持的语法错误,和实际报错信息完全匹配。
  • 字符串引号配对断裂
    原代码写为$(div#afamilis'),左括号后缺少起始单引号,末尾的单引号没有对应匹配的起始引号,字符串结构本身不符合JS语法规范。

修正方案

由于目标元素afamilis是全局唯一的id元素,不需要额外的div标签做选择限定,可直接使用id选择器:

$('#afamilis').append('<%= j render("afamily") %>');

若需保留div标签的选择限定,补充完整的引号匹配即可:

$('div#afamilis').append('<%= j render("afamily") %>');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 10:36:04