链接到页面

时间:2015-08-21 14:06:58

标签: ruby-on-rails ruby-on-rails-4 google-visualization turbolinks

我通过将javascript直接放入我的haml文件中来使用谷歌图表。我已经尝试过其他一些东西(例如chartkick gem),但我仍然遇到与我现在的问题类似的问题。

问题是,当我从网址加载页面或刷新页面时,谷歌图表工作正常。但是,当我从另一个页面上的链接链接到该页面时,该图表无法加载,并且控制台会吐出Uncaught ReferenceError: google is not defined

有什么想法吗?即使我使用了gem,它也会在我刷新页面时加载,但如果我直接链接到它就不会加载。我认为这可能是一个turbolinks问题因此我在该特定页面上禁用了turbolinks,然后是全局,但我仍然遇到同样的问题。以下是我的代码

.row.show-characteristics
  .col-md-3.col-xs-12
  .col-md-3.col-xs-12
  .col-md-3.col-xs-12
  .col-md-3.col-xs-12.google-chart
    #google-donut-chart
%script{type: "text/javascript", src: "https://www.google.com/jsapi"}
%script{type: "text/javascript"}
  :plain
      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('google-donut-chart'));

        chart.draw(data, options);
      }

2 个答案:

答案 0 :(得分:1)

结果是turbolinks的一个问题。我不完全确定,但我认为jquery只是在刷新时加载。我从项目中删除了turbolink以修复它。

答案 1 :(得分:1)

在下面的代码中添加你的js代码,这是turbolink的问题

index.php

您也可以找到更多详细信息here