1

我试图在 erb 内的 rails 标记中连接动态 int。主要思想是动态更新信息框文本。

for (i=2;i<=numplayers;i++)
{
    document.getElementById("infobox2").innerHTML= '<%= @plrdet["+i+"].name %>';
}

如果我尝试类似的东西

 document.getElementById("infobox2").innerHTML= '<%= @plrdet["+i+"].name %>';

它发送错误

can't convert String into Integer

尝试了很多组合,有什么想法吗?

4

3 回答 3

0
for(i=2;i<=numplayers;i++)
{  
    document.getElementById("infobox2").innerHTML = <%= @plrdet[i].name%>;
}
于 2012-06-21T04:45:16.170 回答
0

你必须反过来做。您的 javascript 代码将在客户端浏览器中进行评估,i直到那时才知道。在这些条件下,<%= @plrdet[i] %>不会被 Rails 评估。

<% for i in (0..numberofplayers) do %>
  document.getElementById("infobox2").innerHTML= '<%= @plrdet[i].name %>';
<% end %>

不过,您必须能够numberofplayers在 ERB 中进行评估。

于 2012-06-20T15:54:51.957 回答
0

尝试:

document.getElementById("infobox2").innerHTML= '<%= @plrdet["+i.to_s"].name %>';

但是,看起来您想要一个数组的索引,但是在这种情况下将它包装在一个字符串中,您应该只使用:

document.getElementById("infobox2").innerHTML = '<%= @plrdet[i].name%>';

更新...

我相信问题在于您在需要 JavaScript 变量时尝试执行 ruby​​ 代码。我相信这可能会奏效。

document.getElementById("infobox2").innerHTML = "<%= @plrdet["+i+"].name%>";

注意使用双引号而不是单引号以及开头和结尾。

于 2012-06-20T15:45:28.550 回答