多くの「シリアル」を持つことができる「ハック」と呼ばれるモデルがあります。各「シリアル」には、多くの「観測」を含めることができます。'observations' は、チャート データ (たとえば、日付と値が存在する場所) です。可変数のシリアルを持つことができる単一のハックのチャートを作成できるようにしたいと考えています。各シリアルには、「観察」内のチャートの値が含まれています。
私のハックコントローラーの「表示」アクションは次のようになります。
def show
@hack = Hack.find(params[:id])
@obj = {}
@hack.serials.each do |s|
@obj[:name] = s.series_name
data = s.observations.order("id asc").map{|x| [x.hs_date, x.value]}.to_s.gsub('"', '')
@obj[:data] = data
end
end
show.html.erb ファイルは次のようになります。
<div id="container" style="height: 500px; min-width: 500px"></div>
<script>
$(function() {
// Create the chart
window.chart = new Highcharts.StockChart({
chart : {
renderTo : 'container'
},
series :
<%= raw @obj.to_json %>
});
});
</script>
このコードを実行すると、チャートに「無効な日付」が表示されます。単一のデータ系列を使用しているときに Highstocks がチャートを正しく生成するため、データが正しいことはわかっています。その場合、ハック コントローラーの show アクションは次のようになります。
def show
@hack = Hack.find(params[:id])
end
show.html.erb ファイルを次のように使用します。
<div id="container" style="height: 500px; min-width: 500px"></div>
<script>
$(function() {
// Create the chart
window.chart = new Highcharts.StockChart({
chart : {
renderTo : 'container'
},
series : [{
name: 'first',
data: <%= raw @serial.observations.order("id asc").map{|x| [x.hs_date, x.value]}.to_s.gsub('"', '') %>
}]
});
});
</script>
私の質問は、レールから Highstocks チャートに特定のハックのシリアルの数を n として、n 個のシリアルを追加する方法です。