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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:55:30