我正在使用rails,并收集一些数据来制作饼图。我只是使用ruby对象(所以没有JSON),并使用d3pie。首先,我创建一个辅助函数。然后,我使用该帮助器制作一个javascript函数,并将其传递到dom中。这是我的代码;
helper.rb
def options_data_to_d3(options_data)
d3_data = []
options_data.each do |key, value|
d3_data.push( { label: key.option.as_json, value: value.as_json } )
end
return JSON.pretty_generate(d3_data)
end
这将红宝石哈希,并将其放入json
js功能
function dataPieChart(id, data) {
var config = {
"header": {
"title": {
"text": "Quiz Questions",
"fontSize": 18,
"font": "verdana"
},
"size": {
"canvasHeight": 400,
"canvasWidth": 500
},
"data": {
"content": data
},
"labels": {
"outer": {
"pieDistance": 32
}
}
}
}
var pie = new d3pie(id, config);
}
进入视野
<div id="quizQuestionOptionPie<%= question.id %>"></div>
<script type="text/javascript">dataPieChart("quizQuestionOptionPie<%= question.id %>", <%= raw options_data_to_d3(data[:options]) %>);
</script>
当我在javascript函数中调用控制台日志以查看数据是什么时,我得到了d3pie和d3都在寻找的正确输出,但是仍然出现错误
d3pie error: no data supplied.
有人看到我的代码有问题吗,或者我缺少什么?任何帮助表示赞赏。
最佳答案
您的配置选项未正确括入括号(所有内容均为“标头”的子级)。您的意思是:
var config = {
"header": {
"title": {
"text": "Quiz Questions",
"fontSize": 18,
"font": "verdana"
},
},
"size": {
"canvasHeight": 400,
"canvasWidth": 500
},
"data": {
"content": data
},
"labels": {
"outer": {
"pieDistance": 32
}
}
};
关于javascript - d3pie错误:d3pie.js上没有提供数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33792514/