4

我正在使用此处找到的 gem 使用带有导轨的 High Charts 库。一切都很好,除了当我尝试将 plotLine 添加到任一轴时,我似乎无法弄清楚。这是我迄今为止尝试过的两个选项及其结果。任何对正在发生的事情的见解将不胜感激。

选项1:

chart.yAxis([{title: 'Y-Axis', min: 0, plotLines: {value: 25}])

结果:我的 JavaScript 出现错误

Uncaught TypeError: Object #<Object> has no method 'concat'

具体来说,这是在 highcharts.js 中引用以下代码

each((options.plotLines || []).concat(options.plotBands || []), function (plotLineOptions) {
    //plotLinesAndBands.push(new PlotLineOrBand(plotLineOptions).render());
    axis.addPlotBandOrLine(plotLineOptions);
});

当我在那里暂停执行时,options.plotLines 变量是一个对象而不是数组,因此没有 concat 方法。

选项 2:

chart.yAxis([{title: '', min: 0, plotLines: [{value: 25}]}])

结果:页面无法呈现,Rails 出现以下错误消息。

You must pass a Hash to Highcharts::Axis::PlotLines. You passed [{:value=>25}]

我不知道该怎么做,但是,考虑到高图表的 API 文档,我预计这会起作用,因为我想提供超过 1 个 plotLine。

我也尝试使用chart.renderer.path,但也失败了。有人可以解释发生了什么,并希望提出一种方法,我可以用这个 gem 在 Rails 中的 High Charts 图表上画一条水平线。

谢谢

4

1 回答 1

1

我实际上是通过操作由 HighCharts ruby​​ 对象生成的底层 javascript 来解决这个问题的。这是执行此操作的代码

chart.yAxis([{title: '', min: 0, plot_lines_replace: plot_lines}])

# Because of a bug in this High Charts rails library, I'm going to have
# to add the plot_lines myself through the javascript

return chart.to_s.gsub("plot_lines_replace", "plotLines").html_safe

这将使用 javascript 中的 plotLines 修改 plot_lines_replace 字符串,它会正常工作。

于 2012-11-08T04:33:06.273 回答