Ajax请求后Partial未渲染,但控制台显示已完成渲染
问题排查与解决
1. 修复Partial的HTML语法错误
你的_slider.html.erb存在明显语法问题:
<h1>> YELLO </h1>
<h1>标签后多了一个多余的>,这会导致浏览器解析HTML时出现异常,直接影响内容渲染。修改为:
<h1> YELLO </h1>
2. 确认jQuery是否正确加载
Rails 6及以上版本默认不再包含jQuery,如果项目未手动引入,$('#testDeals')会触发Uncaught ReferenceError: $ is not defined错误,导致JS代码无法执行。
检查与修复方式:
- 打开浏览器控制台(F12),点击链接后查看是否有上述报错。
- 若缺少jQuery,按以下步骤引入:
- 在Gemfile中添加
gem 'jquery-rails',执行bundle install。 - 在
app/javascript/application.js中添加:import 'jquery' import 'jquery_ujs'
- 在Gemfile中添加
3. 验证JS响应内容是否正确
在浏览器Network标签中找到/deals/slider的XHR请求,查看Response内容是否符合预期,正确的响应应该类似:
$('#testDeals').html('<h1>\nYELLO\n</h1>');
如果响应存在语法错误(比如未正确转义的字符),会导致代码执行失败。
4. 检查目标DOM元素状态
确认index.html.erb中的<div id="testDeals">是否在页面中正常存在,未被其他代码删除或隐藏。可以在控制台执行document.getElementById('testDeals'),验证是否能返回该元素。
内容的提问来源于stack exchange,提问作者Iqbal Bakhsh
相关产品推荐
相关产品推荐

