私はlazy_highchartsgemを使用しており、ライブチャートを構成しようとしています。ライブチャートに関するこのガイドに従って、JSON出力をこの形式でレンダリングする関数をコントローラーに追加しました[1340051521000,8]
def live
x = Time.now.to_i * 1000
y = Random.rand(11)
#create an array and echo to JSON
ret =[x,y]
x=ActiveSupport::JSON
@j=x.encode(ret)
render :json => @j
end
次に、live_update.jsという新しいJSファイルがあり、ここに「requestData()」を含む手順2と3を貼り付けました。
ビューからコールバックを作成しました:
= high_chart("my_id", @h) do |c|
requestData();
注:コントローラーから呼び出すことができませんでした:f.options[:chart][:events][:load] = 'requestData'
実行すると、エラーが発生します。JSファイルでグローバルに定義されているのに、チャートが定義されていません。
これは、ブラウザのソースビューに表示されるものです。
<script type="text/javascript">
jQuery(function() {
// 1. Define JSON options
var options = {
chart: {"defaultSeriesType":"column","renderTo":"my_id","zoomType":"xy"},
title: {"text":"Test"},
legend: {"layout":"horizontal","style":{}},
xAxis: {"type":"datetime"},
yAxis: {"title":{"text":"Agents"},"labels":{},"min":"0","allowDecimals":false,"gridLineDashStyle":"LongDash"},
tooltip: {"enabled":true},
credits: {"enabled":false},
plotOptions: {"areaspline":{}},
series: [{"name":"test","data":[]}],
subtitle: {}
};
// 2. Add callbacks (non-JSON compliant)
requestData();
// 3. Build the chart
var chart = new Highcharts.Chart(options);
});
</script>