0

我正在尝试按照此示例Google Charts Quick Start使用Google Charts API

如您所见,数据在 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 文件的头部连接了这个示例 JS。

4

1 回答 1

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>
于 2012-06-05T17:22:55.397 回答