0

ハイチャートを使用して 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

ただし、開発とherokuの動作が異なる理由はまだわかりません。

于 2012-08-28T00:22:45.653 に答える