我的问题是我有一个用Javascript编写的for循环,里面有一些Ruby代码:
<% i = 0 %>
for (var i = 0 ; i < array.length ; i++)
{
alert("<%= i %>");
<% i += 1 %>
}
我总是对&#34; 0&#34;写的。
如何正确增加i
变量?
答案 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的知识或与之交互。