Rails 5 - Google Charts仅显示页面刷新,而不是初始页面加载

时间:2017-04-05 06:07:54

标签: javascript ruby-on-rails google-chartwrapper

我在Rails 5应用页面上显示Google Charts饼图。

如果我单击刷新而不是初始页面加载,则仅显示图表。

看来我不是第一个遇到这个问题的人,但我尝试过的解决方案都没有成功 - 即设置超时。

非常感谢任何指导。

/layouts/application.html.erb

<head>
...
<%= yield :google_chart_scripts %>
...
</head>

/views/organisations/show.html.erb

<% content_for :google_chart_scripts do %>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
      google.charts.load('current', {'packages':['corechart']});

            google.charts.setOnLoadCallback(drawChart);
            function drawChart() {
               var data = google.visualization.arrayToDataTable([
                  ['Effort', 'Amount given'],
                  ['Debt', 100.00],
                  ['Equity', 900.00]
               ]);

               var options = {
                  colors:['#f75b52','#363e4a'],
                  pieHole: 0.4,
                  pieSliceText: 'percentage',
                  chartArea: {'width': '90%', 'height': '90%'},
                  legend: 'none'
               };

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

</script>
<% end %>

2 个答案:

答案 0 :(得分:0)

turbolink的问题,请尝试使用以下命令包装js代码:

$(document).on('ready page:load', function () {
  // your google chart js
});

该问题的更多详细信息here

答案 1 :(得分:0)

使用turbolink时,您经常遇到此问题。一种解决方案是使用jquery-turbolinks gem。

gem 'jquery-turbolinks'
  

你只需在包含jquery之后添加jquery.turbolinks   application.js文件。 (或您正在使用的清单文件)

它会将Rails Turbolinks事件绑定到document.ready事件,这样您就可以轻松编写jQuery。如果您的项目中出现这种情况,这将有助于其他此类情况

希望这有助于。

相关问题