简体   繁体   English

Rails + Javascript +图形-如果我使用变量,则Javascript不起作用

[英]Rails + Javascript + Graph - Javascript doesn't work if I use a variable

I'm using the google charts for show some graphs in my rails app. 我正在使用Google图表在Rails应用中显示一些图形。

I get a code example in internet and I'm testing in my app, but I'm with some dubs and I don't know why it's not working. 我在互联网上有一个代码示例,正在我的应用程序中进行测试,但是我遇到了一些麻烦,而且我不知道为什么它不起作用。

In a view, I put this code below: 看来,我将此代码放在下面:

<script type="text/javascript">
  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(drawChart);
  function drawChart() {
    var data = google.visualization.arrayToDataTable([
      ['Task', 'Hours per Day'],
      ['Work',     11],
      ['Eat',      2],
      ['Commute',  2],
      ['Watch TV', 2],
      ['Sleep',    7]
    ]);

    var options = {
      title: 'My Daily Activities'
    };

    var chart = new google.visualization.PieChart(document.getElementById('piechart'));
    chart.draw(data, options);
  }
</script>

<div id="piechart" style="width: 900px; height: 500px;"></div>

This show the graph correctly, but I if I pass a variable, didn't work, like that: 这样可以正确显示该图,但是如果我传递一个变量,那是行不通的,就像这样:

<% @test = [
      ['Task', 'Hours per Day'],
      ['Work',     11],
      ['Eat',      2],
      ['Commute',  2],
      ['Watch TV', 2],
      ['Sleep',    7]
    ] %>

<script type="text/javascript">
  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(drawChart);
  function drawChart() {
    var data = google.visualization.arrayToDataTable(<%= @test %>);

    var options = {
      title: 'My Daily Activities'
    };

    var chart = new google.visualization.PieChart(document.getElementById('piechart'));
    chart.draw(data, options);
  }
</script>

<div id="piechart" style="width: 900px; height: 500px;"></div>

This code don't show nothing, why? 这段代码什么也没显示,为什么?

Ps1: Sorry for English, I'm learning yet =] Ps1:对不起,英语,我正在学习=]

this- 这个-

<% @test = [
          ['Task', 'Hours per Day'],
          ['Work',     11],
          ['Eat',      2],
          ['Commute',  2],
          ['Watch TV', 2],
          ['Sleep',    7]
        ] %>

just outputs as text into the html 只是作为文本输出到html

if the variable is coming from the controller then; 如果变量来自控制器,则;

<script type="text/javascript">
      var test = <%= @test %>
      google.load("visualization", "1", {packages:["corechart"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = google.visualization.arrayToDataTable(test);

        var options = {
          title: 'My Daily Activities'
        };

        var chart = new google.visualization.PieChart(document.getElementById('piechart'));
        chart.draw(data, options);
      }
    </script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM