foo.html.erb
<script type="text/javascript">
var all_user = <%= @user.all_user_bar_chart.to_json.html_safe) %>;
</script>
abc.js
$(function () {
if ($("#foo").length > 0){
var user_charts = new Highcharts.Chart({
chart: {
renderTo: 'foo'
},
title: {
text: 'User Statistics',
x: -20 //center
},
subtitle: {
text: ' ',
x: -20
},
xAxis: {
categories: ['a', 'b', 'c', 'd']
},
yAxis: {
title: {
text: 'point'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
valueSuffix: '°C'
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
},
series: all_user
});
console.log(all_user);
}
});
这里输出表单模型数据或foo.html.erb: -
“[{\” 名称\ “:\” A \ “\ ”数据\“:94},{\ ”名称\“:\ ”B \“,\ ”数据\“:356},{\” 名\ “:\” C:\ “\ ”数据\“:1}]”
我想删除(“”)双引号并根据`highcharts'支持这些数据以获得用户的基本折线图。我也试过JSON.parse,但它不起作用。每次获得结果字符串“[{\”name \“:\”A \“,\”data \“:94}]”
答案 0 :(得分:0)
to_json
结果是字符串,你需要javascript对象哈希。
在highchart中,你可以将series
属性设置为object而不是string,所以你需要一个来自该字符串的对象,以便在javascript中使用它:
series: JSON.parse(all_user)
例如:
test = "[{\"name\":\"A\",\"data\":94},{\"name\":\"b\",\"data\":356},{\"name\":\"c\",\"data\":1}]"
JSON.parse(test)
# it will return
[{name: "A", data: 94}, {name: "b", data: 356}, {name: "c", data: 1}]