2017-07-30 75 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