我试图在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
尝试了很多组合,任何想法?
答案 0 :(得分: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%>";
注意使用双引号而不是单引号并开始和结束。
答案 1 :(得分:0)
你必须以相反的方式做到这一点。您的javascript代码将在客户端浏览器中进行评估,直到那时才知道i
。在这些条件下,Rails不会评估<%= @plrdet[i] %>
。
<% for i in (0..numberofplayers) do %>
document.getElementById("infobox2").innerHTML= '<%= @plrdet[i].name %>';
<% end %>
您必须能够在ERB中评估numberofplayers
。
答案 2 :(得分:0)
for(i=2;i<=numplayers;i++)
{
document.getElementById("infobox2").innerHTML = <%= @plrdet[i].name%>;
}