0

私は毎分再生成する必要があるハイチャートのグラフを持っています。私は次のグラフをどのようにリフレッシュするのか興味がありましたか? http://pastebin.com/bEwkX8FkRailsのコントローラからデータを取得する一定の間隔でグラフを再レンダリングするには?

おそらく、divをリフレッシュするだけで十分だと思っていましたが、さらに考えた後、おそらくグラフのデータを更新するためにコントローラから何らかの呼び出しを開始しなければならないことに気付きました。ここで正しいアプローチについて考えてみてください。

私は今、Highcharts jsonの機能を使って更新するのが一番良いかもしれないと思っていますが、どこから始めるべきかわかりません。

答えて

1

すべてのX msをポーリングするサーバーにajaxリクエストを設定することをお勧めします。このようなjqueryを使用することをおすすめします。レール側で

var ajax_path = #{action_controller_path} 
function pollData() { 
    $.ajax({ 
    type: 'get', 
    url: ajax_path, 
    success: function(data) { 
     // update chart 
     var series = chart.series[0], 
      shift = series.data.length > 20; // shift if the series is longer than 20   
     chart.series[0].addPoint(data, true, shift); 

     setTimeout(pollData, 60000) // Poll data every 60s 
    } 
    }); 
} 

あなたは、JSONを含めるようにあなたのresponds_toを設定することを忘れないでください、このAJAXリクエストを養うためにコントローラー#アクションを作成する必要があります。この線に沿って何か「そのまま」、このコードをご利用ください。

respond_to :json, only: [:polling_action] 
def polling_action 
    @data_point = Model.get_data 
    respond_with @data_point 
end 

私は実際にグラフを更新する方法の詳細は、記事@ニキータ-beloglazovが参照に記載されていると思う:http://www.highcharts.com/documentation/how-to-useとここhttp://www.highcharts.com/ref/#series-objectのためaddPoint(Object options、[Boolean redraw]、[Boolean shift]、[Mixed animation])apiリファレンス。これはajaxポーリングメソッドでデータポイントをロードした後に呼び出すべきものです。

注:ポーリングデータは、データの更新間隔を知らないと非常に効率的な処理ではありません。このデータを60秒ごとに更新する必要があるだけであることを考慮すれば、これはおそらく問題ではありませんが、これを偶然に出す可能性がある他の人たちのために置きます。

関連する問題