使用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环境却不是这样?和解决方法?
答案 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之间的行为不同。