您好,我正在用RoR编写表单生成器,我想为我的任何问题生成多个图表。对于我的问题x我有这个结果
{"answer1"=>2, "answer2"=>2, "answer3"=>1, ...}
我想知道如何访问第二个数据(数字),以及通常如何在Chart.js脚本中设置“标签”和“数据”字段:
answer= [<% for rep in @polls4 %>
"<%= rep.nom %>",
<% end %>];
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels:answer,
datasets: [{
label: '# of Votes',
data: ?,
backgroundColor: [
我的@ polls4在我的控制器中通过以下方式定义
@polls4 = @polls.where(question_id: 4).group("nom")
谢谢
最佳答案
而不是在JS中添加循环,而是将polls变量初始化为id数组,这样可以避免必须收集它们,并在JS代码中添加Ruby逻辑:
@polls4 = @polls.where('question_id = ?', 4).pluck(:nom)
当您进行分组时,您会得到键/值数据的哈希值,而使用pluck则只会获得每个轮询的ID:
因此图表:
var answer = "<%= @polls4 %>";
var myChart = new Chart(ctx, {
...
});
我建议您将@ polls4变量重命名为更具描述性的名称,并避免在变量名称中使用数字。