3

部分的な行 #1 でエラーが発生します。undefined local variable or method 'level'

私の見解ではコード:

<div id="comments">
    <% level = 0%>
    <% @comments.each do |comment| %>
      <%=render partial: 'comments/single_comment', locals: {level: level, comment: comment} %>
    <% end %>
    <% if 0 < level %>
    <% (level).times do %>
    </div>
    <% end %>
    <% end %>
  </div>
</div> 

そして部分的な最初の行:

<% if comment.level < level %>
  <% (level - comment.level).times do %>
  </div>
  <% end %>
<% end %> 

ここで何が問題なのですか?

4

3 に答える 3

2

このコードは機能するはずです(それほど良くはありませんが、機能するはずです)「レベルローカル」なしでは見られなかったコードの一部の他の場所で部分的な(comments / single_comment)を使用するという問題があると思います: )

于 2013-02-12T20:03:22.687 に答える
1

コードが正しいようです..single_commentファイル名を使用する部分ビューがあるかどうかを確認してください...また、ループを実行する代わりにコレクションを使用できます

<%= render partial: 'comments/single_comment', collections: @comments, locals: { level: level } %>
于 2013-02-12T20:30:24.457 に答える
0

パーシャルに間違った方法で引数を渡しています。以下に更新します。

<%=render partial: 'comments/single_comment', locals: => {:level => level, :comment => comment} %>

次のようにパーシャルでオブジェクトにアクセスできるようになりました

<% if locals[:level] < level %>
  <% (level - locals[:level]).times do %>
  </div>
  <% end %>
<% end %> 
于 2016-03-28T09:14:42.367 に答える