如何在erb模板中增加Ruby变量?

时间:2016-04-25 14:15:00

标签: javascript ruby-on-rails ruby for-loop increment

我的问题是我有一个用Javascript编写的for循环,里面有一些Ruby代码:

<% i = 0 %>
for (var i = 0 ; i < array.length ; i++)
{
   alert("<%= i %>");
   <% i += 1 %>
}

我总是对&#34; 0&#34;写的。 如何正确增加i变量?

1 个答案:

答案 0 :(得分:1)

您的问题是,在通过ERB运行模板时没有发生循环。你有一个javascript循环,它在通过ERB运行时根本没有执行 - 它以纯文本形式传递,ERB只在遇到<% .. %><%= .. %>时才执行/替换

由ERB处理

<% i = 0 %>
for (var i = 0 ; i < array.length ; i++)
{
    alert("<%= i %>");
    <% i += 1 %>
}
到达浏览器时

成为以下内容:

for (var i = 0 ; i < array.length ; i++)
{
    alert("0");
}

因此,当您在JS中迭代数组时,您会在每次迭代时警告常量"0"。您想在ERB模板中写下这个:

for (var i = 0 ; i < array.length ; i++)
{
    alert(i);
}

请记住,ERB正在从后端(您的数据库)中替换适当的内容,并且不了解最终在前端(在浏览器中)的JS的知识或与之交互。