[英]Rails 5 - Google Charts only displaying on page refresh, not initial page load
我正在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 %>
那是turbolink的问题,尝试用以下代码包装js代码:
$(document).on('ready page:load', function () {
// your google chart js
});
有关此问题的更多详细信息,请点击此处
使用turbolink时,您经常会遇到此问题。 一种解决方案是使用jquery-turbolinks gem。
gem 'jquery-turbolinks'
您只需在application.js文件中包含jquery之后立即添加jquery.turbolinks。 (或您正在使用的清单文件)
它将Rails Turbolinks事件绑定到document.ready事件,因此您可以轻松编写jQuery。 如果您的项目中发生其他情况,这将有所帮助
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.