0

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

基本上,当我的视图加载到 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 环境却不是这样?和解决方法?

4

1 回答 1

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

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

于 2012-08-28T00:22:45.653 回答