Rails数组到javascript在HighCharts、Highstock、二维数组中

Rails数组到javascript在HighCharts、Highstock、二维数组中,javascript,ruby-on-rails-3,highcharts,highstock,Javascript,Ruby On Rails 3,Highcharts,Highstock,在我的应用程序中,用户记录他们的体重和体重所属的日期。我希望数据显示在一个高库存线图中。应该很简单,但在过去的两个月里我一直在做这方面的工作。我已经看了很多不同的东西,但我无法让它发挥作用 我想显示的确切数据是线条图中的实际线条,即它们的重量,y轴为它们的重量,x轴为用户输入该重量的日期 i、 e.用户在表格中输入昨天的体重为135,他们在表格中输入的日期为2012年3月12日 不知道这是否重要,但用户有很多权重,权重属于用户 这是我所得到的,我得到了一堆不同的错误。我肯定错过了/不理解这里的一

在我的应用程序中,用户记录他们的体重和体重所属的日期。我希望数据显示在一个高库存线图中。应该很简单,但在过去的两个月里我一直在做这方面的工作。我已经看了很多不同的东西,但我无法让它发挥作用

我想显示的确切数据是线条图中的实际线条,即它们的重量,y轴为它们的重量,x轴为用户输入该重量的日期

i、 e.用户在表格中输入昨天的体重为135,他们在表格中输入的日期为2012年3月12日

不知道这是否重要,但用户有很多权重,权重属于用户

这是我所得到的,我得到了一堆不同的错误。我肯定错过了/不理解这里的一些东西:

重量模型:

class Weight < ActiveRecord::Base

 def user_weight_series(user, weight)
  weights_by_weight_date = Weights.select("date(weight_date) as dater, content as   weights")
   weights_by_weight_date.map do |record|
parts = %w[%Y %m %d].map{ |s| record.dater.send(s) }
"[Date.UTC(#{parts.join(',')}), #{record.weights}]"
  end
end
application.html.erb

  <script type="text/javascript">
    $(function () {
    var chart;
     $(document).ready(function() {
    window.chart = new Highcharts.StockChart({

        chart: {
            renderTo: 'weight_chart',
            type: 'line',
            marginRight: 20,
            marginBottom: 25
        },
        title: {
            text: 'Your Weight Over Time',
            x: -20 //center
        },
        yAxis: {
            title: {
                text: 'Weight'
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: '#808080'
            }]
        },

        legend: {
            layout: 'vertical',
            align: 'center',
            verticalAlign: 'bottom',
            x: -10,
            y: 100,
            borderWidth: 0
        },

        scrollbar: {
          enabled: true
        },

        rangeSelector : {
            selected : 1
        },

        credits: {
            enabled: false
        },


        series: [{
            tickInterval: <%= 1.day * 1000 %>,
            pointStart: <%= 3.weeks.ago.at_midnight.to_i * 1000 %>,
            name: 'Weight',
            data: [ <%= current_user.user_weight_series(user, weight).join(", ") %> ],

        }]
    }, 

    function(chart){

        // apply the date pickers
        setTimeout(function(){
            $('input.highcharts-range-selector', $('#'+chart.options.chart.renderTo))
                .datepicker()
        },0)


    });
});

});


最好的方法是什么?提前谢谢你

以下是我使用的过程,以及一些让您开始的提示:

使用伪json数据填充图表,从要创建的所需显示反向工作。 了解如何为真实数据库数据创建与伪json数据系列匹配的ruby哈希。对于时间戳,请将其转换为highcharts可读格式,如下所示:

SOME_DATE.to_time.to_i * 1000
让您的一个控制器将生成的ruby哈希呈现为json

def some_controller_method
  @chart_data_series = [] // your desired series here

  respond_to do |format|
    format.json { render :json => @chart_data_series }
  end
end
从相应的页面读取此json,并将其传递到图表系列中。一种方法是使用:


我没有与Ruby合作过,但与Highstock合作过。“你能生成一个样本来处理数据吗?或者提供你得到的错误数据是什么样子的?”塞巴斯蒂安不太清楚你的意思。数据库表中有两列:weight和weight date输入重量的日期。我需要使用rails代码获取数据,并将其放入二维数组中,以便在highstock图表中正确显示。在数据中,我指的是您在系列中接收/打印的内容->行数据中的数据:[]当它像这样时,会引发异常,因此我无法真正看到打印的内容。我想让它看起来像[[2-4-2013,211],[2-7-2013,210],[2-7-2013,205]],它的形式可以在highstock中使用
function buildChart(){
  d3.json("/path/to/your/data.json", function(error, json_data) {

    $('#chart_container').highcharts({
        chart: {type: 'column'}, 
        // options, options, etc
        series: json_data,
        // options, options, etc
    });

  });
});