如何用rails标签连接整数?

时间:2012-06-20 15:41:06

标签: javascript ruby-on-rails erb

我试图在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

尝试了很多组合,任何想法?

3 个答案:

答案 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%>;
}