1

Railsコントローラーの1つに配列があります。対応する js.erb ファイルの要素をループしたいと思います。問題は、要素ごとに 2 回反復しているように見えることです。コードは次のとおりです。

<% @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 %>

@array3つの要素があるとしましょう。次に、上記のコードは非常に奇妙な出力を生成します。

row found:
1
row not found:
1
row found:
2
row not found:
2
row found:
3
row not found:
3

@array私の最初の質問は: 3 つの要素があるのになぜ 6 回の反復があるのですか? 2 番目の質問: の結果がnull と (not null) を交互に繰り返すの
はなぜですか?getElementById

4

1 に答える 1

1

問題はおそらく、内部コードが ruby​​ でありif、js コードの条件に関係なく実行されることです。これらの行をサーバー コンソールに出力するように ruby​​ を使用pすると、js はクライアント側でのみ実行されるため、サーバー コンソールに何かを配置する機会はありません。

基本的には 2 つのことを行います。1 つ目は、空のブロックを含む条件を含む js を生成し、2 つ目は、その間にいくつかの行を 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 %>
于 2012-08-23T10:33:46.910 に答える