Rails + charts.js:如何使用数据库中的值填充Javascript数组?

use*_*621 5 javascript ruby jquery charts ruby-on-rails

我想使用Google可视化图表将信息显示到图表中.

用于将值设置到图形中的javascript函数如下所示:

function drawLineChart(chartType) {

    if(chartType == undefined) {
        chartType = 'data1';
    }

    var data = {
        data1: [
            ['Year', 'Sales', 'Expenses'],
            ['2004',  1000,      400],
            ['2005',  1170,      460],
            ['2006',  660,       1120],
            ['2007',  1030,      540]
        ]
    };

    ...
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,我不知道如何使用数据库中的值填充这样的数组 - 任何提示?

非常感谢

Eug*_*ene 4

您需要将 javascript 嵌入到 erb 中。如果您为文件命名chart.js.erb,您将能够Model通过 erb 从 javascript 访问逻辑。此方法的缺点是必须在每个页面视图上编译 JavaScript,而不是静态编译资源。这可能会减慢页面加载时间,如果这是一个流量很大的页面,则应寻找替代路线。

例子

chart.js.erb

function drawLineChart(chartType) {

  if(chartType == undefined) {
    chartType = 'data1';
  }

  var data = {
    data1: [
      <%= Model.all.map { |m| [m.year, m.sales, m.expenses] }.unshift(['Year', 'Sales', 'Expenses']) %>
    ]
  };

  ...
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以创建一个 AJAX 请求,通过 API 控制器在页面加载时填充数组。此方法允许静态编译资源,但有点复杂。