0

我正在尝试使用 Google 图表工具绘制图表。

  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(drawChart);
  function drawChart() {
    var data = new google.visualization.DataTable();
    data.addColumn('number', 'Month');
    data.addColumn('number', 'Money');
    data.addRows([
        [<%= @months %>, <%= @money %>] 
        ]);

    var options = {
      title: 'Title'
    };

    var chart = new google.visualization.LineChart(document.getElementById('chart_div_2'));
    chart.draw(data, options);
  }

@months 和 @money 是数组。不幸的是,可能我不能以这种方式传递一个数组,因为图表没有显示出来。处理这种情况的正确方法是什么?

更新

好的,我在 for 循环中使用了 Gon 和 setCell 函数,它可以工作

4

2 回答 2

0

使用 json。该respond_to块可用于此。返回包含数据值数组的 json 哈希。

def months_monies
  respond_to |format|
    format.json {render :json => @post}
    # The post is a Ruby hash that gets converted into json string
    format.html #months_monies.html.erb
  end
end

考虑一个@post变量是的例子,比如说{:a => {"January" => 1000}, :b => {"April" => 1222}}

这可以通过 AJAX 调用从 javascript 块访问http://localhost:3000/months_monies.json

使用 jQuery 的示例:

$.get("http://localhost:3000/controller/months_monies.json",function(post){
  post.a.January # => 1000
  post.b.April   # => 1222
});

如果@post变量是一个数组(在您的情况下很可能是这种情况),则该方法几乎相似。说@post = [{'january' => 1000}, {'february' => 1111}]

然后您将使用post[0].januaryandpost[1].february来获取$.get块中的值。

希望有帮助。

于 2012-08-13T19:57:32.370 回答
0

在我的 SO 问题中,我展示了一个将 ruby​​ 数组传递给 Google 图表 api 的工作示例。(我的问题与在 Ruby 中指定缺失/空系列值有关,这似乎不会影响您的问题。)

在rails应用程序中使用google chart api-使用arrayToDataTable时如何在系列中指定一个空(缺失)值

于 2012-10-15T07:32:10.330 回答