您好,我正在用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变量重命名为更具描述性的名称,并避免在变量名称中使用数字。

09-30 22:06