我正在尝试在jqplot中创建一个饼图。我不确定我是否遗漏了任何东西,但图表根本没有渲染。
下面是我在Rails中的dashboard_controller中的一个动作方法:
def index
@trans = Transaction.joins(:category).group("categories.name").sum(:amount)
respond_to do |format|
format.html # index.html.erb
format.json { render json: @trans }
end
end
这是执行action方法后得到的json数据。
{"Bills & Utilities":1019.11,"Uncategorized":196.57,"Home":30.29,"Entertainment":300.0,"Food & Dining":465.45,"Personal Care":63.92,"Auto & Transport":571.44}
这是我的html和javascript
<script type="text/javascript" src="/assets/jqplot/jqplot.js"></script>
<script type="text/javascript" src="/assets/jqplot/plugins/jqplot.pieRenderer.min.js"></script>
<script type="text/javascript" src="/assets/jqplot/plugins/jqplot.ciParser.js"></script>
<script type="text/javascript" src="/assets/jqplot/plugins/jqplot.json2.js"></script>
<link rel="stylesheet" type="text/css" href="/assets/jqplot/jqplot.css" />
<div id="chart10" style="margin-top:20px; margin-left:20px; width:460px; height:300px;"></div>
<script class="code" type="text/javascript">
$(document).ready(function() {
$.getJSON('/dashboard/index.json', function(data){
//var data = [['Heavy Industry', 12],['Retail', 9], ['Light Industry', 14]];
plot = jQuery.jqplot('chart10', data, {
title: ' ',
//dataRenderer: $.jqplot.ciParser,
seriesDefaults: {
shadow: true,
renderer: $.jqplot.PieRenderer,
rendererOptions: {
fill: false,
sliceMargin: 4,
showDataLabels: true
}
},
legend: { show:true }
});
});
}); // document.ready
</script>
任何想法可能出错?
答案 0 :(得分:0)
我错过了什么吗?您的json返回变量data
如下所示:
{"Bills & Utilities":1019.11,"Uncategorized":196.57,"Home":30.29,"Entertainment":300.0,"Food & Dining":465.45,"Personal Care":63.92,"Auto & Transport":571.44}
虽然jqPlot想要这样:
[["Bills & Utilities",1019.11],["Uncategorized",196.57],["Home",30.29],["Entertainment",300.0],["Food & Dining",465.45],["Personal Care",63.92],["Auto & Transport":571.44]]
修改评论
以正确的格式输入数据:
data = {"Bills & Utilities":1019.11,"Uncategorized":196.57,"Home":30.29,"Entertainment":300.0,"Food & Dining":465.45,"Personal Care":63.92,"Auto & Transport":571.44};
jqData = []
$.each(data, function(k,v){jqData.push([k,v]);});
请参阅小提琴here。