2017-07-30 79 views
0

我请教。 Google图表并不总是在第一次尝试时加载......如何解决这个问题?谷歌图表并不总是在第一次尝试加载

demo

观点:

<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([ 
     ['Time', 'TempC'], 
    <% @data.css("hourly").each do |hrly| %>  
    ['<%= hrly.css("time").text %>',<%= hrly.css("tempC").text %>], 
    <% end %> 
    ]); 
    var options = { 
     title: 'Temperature forecast' 
    }; 
    var chart = new google.visualization.AreaChart(document.getElementById('chart_div')); 
    chart.draw(data, options); 
    } 
</script> 
<div id="chart_div" style="width: 100%; height: auto;"></div> 

控制器

class WwoController < ApplicationController 
def weather 
require 'nokogiri' 

url = "https://api.worldweatheronline.com/premium/v1/weather.ashx?q=59.94%2C30.31&num_of_days=4&key=***********************************" 
@data = Nokogiri::XML(open(url)) 

end 
end 

回答

0

如果使用turbolinks,尝试在页面禁用它,因为我也有类似的问题与谷歌地图API的

禁用turbolink,您可以将其添加到您的应用程序lication.html.erb

<body <%= yield(:body_attributes) %>> 

然后在view.html.erb在第一线添加此

<%= content_for(:body_attributes, 'data-no-turbolink') %> 

你也可以用的link_to

<%= link_to 'link_name', your_link_path, 'data-no-turbolink' => true %> 

禁用的TurboLink如果使用轨道/ turbolinks 5 将data-no-turbolink更改为data-turbolinks并切换布尔值

也尝试将您的JavaScript放在底部。使它在html dom之后加载。

+0

谢谢。我做的。但这在我的情况下不起作用。也许我应该使用宝石googlecharts?或者我需要尝试高点图... – Boris

+0

尝试将脚本放在底部,而您的div放在最上面。 – icemelt

+0

已解决: <%= link_to'link_name',your_link_path,data:{turbolinks:'false'}%> $ rails version - > Rails 5.1.2 – Boris