发送到series.data的字符串值,预期的Number

时间:2012-08-25 05:37:52

标签: ruby-on-rails heroku highcharts

使用Highcharts(error 14)将我的rails应用程序发布到Heroku时出错。在开发中,它一切正常,值不会转换为字符串。

基本上,当我的视图加载到Heroku上时,我得到以下代码:

    <script type="text/javascript" charset="UTF-8">
    $(function () {
        var chart;
        $(document).ready(function() {
            chart = new Highcharts.Chart({
                chart: {
                    renderTo: 'visualization',
                    plotBackgroundColor: null,
                    plotBorderWidth: null,
                    plotShadow: false
                },
                title: {
                    text: 'Receipts by Gender'
                },
                tooltip: {
                    formatter: function() {
                        return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
                    }
                },
                plotOptions: {
                    pie: {
                        allowPointSelect: true,
                        cursor: 'pointer',
                        dataLabels: {
                            enabled: false
                        },
                        showInLegend: true
                    }
                },
                series: [{
                    type: 'pie',
                    name: 'Receipts by gender',
                    data: [["M", "432854518.0"]]
                }]
            });
        });

    });
    </script>

如果我们看一下series.data,我们会看到[[“M”,“432854518.0”]],这里我们遇到了问题。右边的值应该是一个浮点数或至少是一个整数。

我的控制器:

    @pie_gender_total = Receipt.group_by_gender_pie(current_user, :total)
    @pie_gender = @pie_gender_total

我的观点:

<script type="text/javascript" charset="UTF-8">
$(function () {
    var chart;
    $(document).ready(function() {
        chart = new Highcharts.Chart({
        ...
            series: [{
                ...
                data: <%=raw @pie_gender %>
            }]
        });
    });

});
</script>

我的模特方法:

def self.group_by_gender_pie(user, dim, begin_date=nil, end_date=nil)
    arr=[]
    self.group_by_gender(user).each do |item| arr.push([item.gender, dim == :count ? item.number_of_receipts : item.total]) end
    arr
  end

关于为什么相同的解决方案在开发中有效的任何想法,但对于我的heroku环境却不是这样?和解决方法?

1 个答案:

答案 0 :(得分:0)

最后,我发现问题可以追溯到模型。

这是解决方案(基本上将数字转换为浮点数):

 def self.group_by_gender_pie(user, dim, begin_date=nil, end_date=nil)
    arr=[]
    self.group_by_gender(user).each do |item| arr.push([item.gender, dim == :count ? item.number_of_receipts.to_f : item.total.to_f]) end
    arr
  end

我仍然不明白为什么开发和heroku之间的行为不同。