Webpack构建的Ruby on Rails 7中Chartkick无法加载问题求助
Rails 7下Chartkick饼图仅显示“Loading”的排查方案
1. 确认JS依赖的导入配置
Rails 7的JS打包方式(importmap/jsbundling)会影响Chartkick的加载,需确保正确导入:
- 使用importmap:
在config/importmap.rb中添加:
然后在pin "chartkick", to: "chartkick.js" pin "chart.js", to: "chart.js"app/javascript/application.js中导入:import "chartkick" import "chart.js" - 使用jsbundling(esbuild/rollup):
在app/javascript/application.js中添加:import Chartkick from "chartkick" import Chart from "chart.js/auto" Chartkick.use(Chart)
2. 处理pnpm引擎警告
chart.js@4.4.0的pnpm警告不影响功能,若要消除:
在项目根目录的package.json中添加:
"pnpm": { "engineStrict": false }
或在.npmrc中设置engine-strict=false。
3. 验证数据格式
在视图中临时打印数据,确认是合法的键值对哈希:
<%= debug Income.group(:income_description).count %>
需确保输出类似{"工资"=>12000, "奖金"=>5000},无空数据或格式异常。
4. 排查Turbo影响
Rails 7默认启用Turbo,可能导致JS未正确初始化图表:
在app/javascript/application.js中添加Turbo加载后的重绘逻辑:
document.addEventListener("turbo:load", () => { Chartkick.eachChart(chart => chart.redraw()); });
也可以在页面标签添加data-turbo="false"临时禁用Turbo测试。
5. 降级Chart.js版本尝试
Chart.js 4.x与部分Chartkick版本可能存在兼容性问题,尝试降级到3.x:
yarn add chart.js@3.9.1
重启服务器并清除浏览器缓存后测试。
内容的提问来源于stack exchange,提问作者el_tinha
相关产品推荐
相关产品推荐

