我正在使用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/

10-09 23:22