Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js.erb文件中的循环迭代次数是其应迭代次数的两倍_Javascript_Ruby On Rails - Fatal编程技术网

Javascript js.erb文件中的循环迭代次数是其应迭代次数的两倍

Javascript js.erb文件中的循环迭代次数是其应迭代次数的两倍,javascript,ruby-on-rails,Javascript,Ruby On Rails,我的一个rails控制器中有一个数组。我想在相应的js.erb文件中遍历它的元素。问题是它似乎对每个元素迭代两次。代码如下: <% @array.each do |element| %> table_row = document.getElementById("<%= element[:row_id]%>") if (table_row != null) { <% p "row found:" %> &l

我的一个rails控制器中有一个数组。我想在相应的js.erb文件中遍历它的元素。问题是它似乎对每个元素迭代两次。代码如下:

<% @array.each do |element| %>
    table_row = document.getElementById("<%= element[:row_id]%>")
    if (table_row != null)
    {
        <% p "row found:" %>
        <% p element[:row_id] %>
    }
    else
    {
        <% p "row not found:" %>
        <% p element[:row_id] %>
    }
<% end %>
我的第一个问题是:当
@array
有3个元素时,为什么会有6次迭代
第二个问题:
getElementById
的结果为什么在null和(非null)之间交替出现?

问题很可能是内部代码是ruby,它的执行与js代码中的
if
条件无关。通过使用
p
告诉ruby将这些行打印到服务器控制台,因为js将只在客户端执行,所以没有机会将任何内容放到服务器控制台

基本上,您要做两件事:首先生成一个js,其中包含一些带有空块的条件,然后在此期间将一些行打印到rails服务器控制台。你不能把那样的东西混在一起。使用类似的方法,查看:

<% @array.each do |element| %>
    table_row = document.getElementById("<%= element[:row_id]%>")
    if (table_row != null)
    {
        alert("row found: <%= element[:row_id] %>");
    }
    else
    {
        alert("row not found: <%= element[:row_id] %>");
    }
<% end %>

table_row=document.getElementById(“”)
if(表_行!=null)
{
警报(“找到行:”);
}
其他的
{
警报(“未找到行:”);
}

问题很可能是内部代码是ruby,它的执行与js代码中的
if
条件无关。通过使用
p
告诉ruby将这些行打印到服务器控制台,因为js将只在客户端执行,所以没有机会将任何内容放到服务器控制台

基本上,您要做两件事:首先生成一个js,其中包含一些带有空块的条件,然后在此期间将一些行打印到rails服务器控制台。你不能把那样的东西混在一起。使用类似的方法,查看:

<% @array.each do |element| %>
    table_row = document.getElementById("<%= element[:row_id]%>")
    if (table_row != null)
    {
        alert("row found: <%= element[:row_id] %>");
    }
    else
    {
        alert("row not found: <%= element[:row_id] %>");
    }
<% end %>

table_row=document.getElementById(“”)
if(表_行!=null)
{
警报(“找到行:”);
}
其他的
{
警报(“未找到行:”);
}

我认为代码中存在一个问题,如何将javascript变量分配给ruby
table_row=document.getElementById(“”)
Ruby在服务器上执行,javascript在客户端执行。他们彼此不了解。你假设它们同时执行;他们没有。模板文件生成JS,稍后执行。它精确地打印出您所期望的内容;Ruby代码不关心JS条件。我认为代码中存在一个问题,您将如何为Ruby分配javascript变量
table_row=document.getElementById(“”)
Ruby在服务器上执行,javascript在客户端执行。他们彼此不了解。你假设它们同时执行;他们没有。模板文件生成JS,稍后执行。它精确地打印出您所期望的内容;Ruby代码不关心JS条件。