我有这个javascript代码,来自我视图底部的谷歌图表api:
<div id='visualization'></div>
...
<script type="text/javascript">
function drawVisualization() {
// Create and populate the data table.
var data = google.visualization.arrayToDataTable(<%=raw @pie_gender %>)
// Create and draw the visualization.
new google.visualization.PieChart(document.getElementById('visualization')).
draw(data, {title:"Men and Women"});
}
google.setOnLoadCallback(drawVisualization);
</script>
我试图将此 js 代码放在我的资产文件夹中的 .js 文件下,并将其包含在我的标题中,以及替换<%=raw @pie_gender %>
为this.getAttribute('data-message')
并将我的 div 设置为',但随后我收到一个 javascript 错误"getAttribute" does not exist for object window
我也尝试将我的数组作为输入参数传递,例如 : onload="drawVisualization(<%=raw @pie_gender %>)
,但后来我得到“错误:不是数组”
我可能做错了什么?
编辑
@pie_gender = [['性别', '出现次数']['M', 10]['F', 5]]
基于谷歌的例子
编辑 2 如果我打印 json 输出
<% logger.debug "Pie Gender : #{@pie_gender.to_json}" %>
<div id="visualization" onload="drawVisualization(<%= @pie_gender.to_json %>)" > </div>
,看起来还不错:
Pie Gender : [["Gender","Receipts"],["",25000],["F",8658]]
但似乎在将它作为参数发送给我的 js 函数时发生了一些事情,因为它仍然说消息不是数组:
function drawVisualization(message) {
// Create and populate the data table.
var data = google.visualization.arrayToDataTable(message);
// Create and draw the visualization.
new google.visualization.PieChart(document.getElementById('visualization')).
draw(data, {title:"Men and Women"});
}
google.setOnLoadCallback(drawVisualization);