我的谷歌饼图代码是
var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
["Work", 50],
["Eat", 20],
["Commute", 20],
["Watch TV", 5],
["Sleep", 5]
]);
我的代码是(<%= @datas.map { |d| [d.name, d.value] }.inspect %>)
给出了结果
([["apple", "10"], ["orange", 20], ["banana", 30], ["grapes", 80], ["papaya", 44]])
当我将此结果直接放入我的谷歌饼图代码中时,就像这样
var data = google.visualization.arrayToDataTable([["apple", "10"], ["orange", 20], ["banana", 30], ["grapes", 80], ["papaya", 44]])
然后它完美地运作。 但直接保持
var data = google.visualization.arrayToDataTable(<%= @datas.map { |d| [d.name, d.value] }.inspect %>)
不起作用。这可能是背后的原因。 ruby代码是否有一些合成来保持在内部或我在哪里做错了?
答案 0 :(得分:1)
怎么样?
(<%= @datas.map { |d| [d.name, d.value] }.to_json.html_safe -%>)
答案 1 :(得分:1)
这有用吗:
@datas = {:apple => 10, :orange => 20, :banana => 30}
@datas.map { |name, value| [name.to_s, value] }
# => [["apple", 10], ["orange", 20], ["banana", 30]]
所以只需写出:&lt;%= @ datas.map {| name,value | [name.to_s,value]}%&gt;
答案 2 :(得分:-1)
你试试这个..你根据这个改变你的代码
var data = google.visualization.arrayToDataTable(<%= make_a_chart %>);
并将其放在相应的帮助器中:
def make_a_chart
result = []
result.push make_labels,
make_data( 0, "zerohour" ),
make_data( 3, "threehours" ),
make_data( 6, "sixhours" ),
make_data( 9, "ninehours" ),
make_data( 12, "twelvehours" )
return result
end
def make_labels
y = ["Time"]
for task in Task.all do
y.append task.name
end
return y
end
def make_data( time, completeness )
y = Task.first.created_at + time
for task in Task.all do
y.append task[completeness]
end
return y
end