2

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 に接続すると、機能します。

4

1 に答える 1

0

Google の jsapi.js の上部を見ると、他の外部 JS ファイルを参照しているように見えます。これらは、JS ファイル全体で使用される変数です。

google.loader.ServiceBase = 'https://www.google.com/uds';
google.loader.GoogleApisBase = 'https://ajax.googleapis.com/ajax';
于 2013-04-12T05:43:46.820 に答える