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

看起来这段代码应该可以工作(它不是那么好,但它应该可以工作)我认为你在代码的某些部分的其他地方使用你的部分(评论/single_comment)的问题是我们在没有'level local'的情况下看不到的: )

于 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 回答