我正在尝试使用此示例Google Charts API
后的Google Charts Quick Start如您所见,数据在JS中创建为:
data.addColumn('string', 'Topping');
data.addColumn('number', 'Slices');
data.addRows([
['Mushrooms', 3],
['Onions', 1],
['Olives', 1],
['Zucchini', 1],
['Pepperoni', 2]
]);
我的问题是:
如果在我的控制器中我获取数据......如何将其传递给我的模板文件的Javascript?我把这个例子连接到我的index.html.erb文件的头部。
答案 0 :(得分:0)
您只需要在控制器操作中创建一个ruby变量来保存您的值并使用<%=%>使用它们在视图中生成javascript。标签
实施例: @values将是一个名称值集合。
data.addColumn('string', 'Topping');
data.addColumn('number', 'Slices');
data.addRows([
<% @values.each do |v| %>
['<%= v.name %>', <%= v.value %>],
<% end %>
]);
使用js函数的示例。
index.js:
var values;
function InitPage(valuesFromView)
{
values = valuesFromView;
}
function InitData()
{
data.addColumn('string', 'Topping');
data.addColumn('number', 'Slices');
data.addRows(values);
}
index.html.erb:注意我在页面加载时使用jquery来调用InitPage,如果你没有使用jquery,你的InitPage调用可能会出现在body标签的onload或者类似的东西上。
<script>
$(document).ready(function() {
InitPage([
<% @values.each do |v| %>
['<%= v.name %>', <%= v.value %>],
<% end %>
]);
});
</script>