Rails アプリで Google ビジュアライゼーション JavaScript API を使用しており、application.html.erb ファイルに次のように含めています。
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
スクリプトと次のコードを機能させるには、インターネットに接続する必要があります。代わりに、上記の URL の内容を取得し、Rails アプリの assets>javascripts フォルダーに配置して、jsapi.js という名前を付けました。次に、以下を application.html.erb ファイルに含めました。
<%= javascript_include_tag "jsapi" %>
インターネットに接続していないときにアプリを実行すると、上記のファイルが生成されるため、その内容を確認できます。
<script src="/assets/jsapi.js?body=1" type="text/javascript"></script>
ただし、作成しようとしている実際のチャートは機能しません。これがなぜなのかについて何かアドバイスはありますか?index.html.erb の JavaScript の完全なコード (実際にはライブラリを使用) は次のとおりです。
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var options = {
title: 'Most common phrases in pro-Microsoft Reviews (<%= @reviews.count %> reviews analyzed)',
vAxis: {title: 'Phrases', titleTextStyle: {color: 'red'}},
animation:{
duration: 2000,
easing: 'out',}
};
var data = google.visualization.arrayToDataTable([
['Phrase', 'Frequency'],
<% @frequency.each do |key,value| %>
['<%= key %>', <%= value %>],
<% end %>
]);
var chart = new google.visualization.BarChart(document.getElementById('chart_div'));
chart.draw(data, options);
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
}
</script>
すぐ上のコードと関係があるような気がします。含めた最初の JavaScript スニペットを削除して Web に接続すると、機能します。