【发布时间】:2014-09-26 20:25:56
【问题描述】:
我正在尝试在 Morris.js 中创建一个简单的条形图,它将显示一个人的工作量以及他们的姓名。 (名称、工作负载)|键、值|
为此,我创建了一个用户名和他们的工作负载的哈希,@workloads。然后,在我的 charts.js.erb 文件中:
$(document).ready(function() {
Morris.Bar({
element: 'workload-bar-chart',
data: [
<% @workloads.each do |key, value| %>
<%= "{ y: '#{key}', a: #{value} }," %>
<% end %>
],
xkey: 'y',
ykeys: ['a'],
labels: ['Name'],
hideHover: 'auto',
resize: true
});
});
这是在浏览器中呈现的输出。 (Safari,如果你问的话。)
$(document).ready(function() {
Morris.Bar({
element: 'workload-bar-chart',
data: [
{ y: 'Ronny', a: 0 },
{ y: 'Jeff', a: 24 },
{ y: 'Brad', a: 41 },
{ y: 'Janice', a: 2 },
{ y: 'Jose', a: 4 },
],
xkey: 'y',
ykeys: ['a'],
labels: ['Name'],
hideHover: 'auto',
resize: true
});
});
现在,这对 Morris.js 根本不起作用。我想要得到的输出是这样的:
$(document).ready(function() {
Morris.Bar({
element: 'workload-bar-chart',
data: [
{ y: 'Ronny', a: 0 },
{ y: 'Jeff', a: 24 },
{ y: 'Brad', a: 41 },
{ y: 'Janice', a: 2 },
{ y: 'Jose', a: 4 },
],
xkey: 'y',
ykeys: ['a'],
labels: ['Name'],
hideHover: 'auto',
resize: true
});
});
当我手动编写代码时,它可以完美运行,而且我认为散列本身没有任何问题。 (它在视图中打印得很好。)我只需要阻止我的' 转换为&#39;,我相信这意味着我需要以某种方式逃避它。我认为它正在将我的 ' 转换为 HTML 实体(十进制)。
仅供参考,我对 javascript 几乎一无所知,而且我使用 Ruby on Rails 编码才一年多。
【问题讨论】:
-
附带说明,通过 ERB 将数据转储到 javascript 是一种反模式。通常最好用 ajax 加载它。
标签: javascript ruby-on-rails ruby erb morris.js