Ruby on rails 将多个变量传递给部分

Ruby on rails 将多个变量传递给部分,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我在部分行#1中得到错误:未定义的局部变量或方法“level” 在我看来: <div id="comments"> <% level = 0%> <% @comments.each do |comment| %> <%=render partial: 'comments/single_comment', locals: {level: level, comment: comment} %> <% end %

我在部分行#1中得到错误:
未定义的局部变量或方法“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 %> 


知道这里出了什么问题吗?

看起来这段代码应该可以工作(虽然不太好,但应该可以工作)
我认为,在代码的某些部分使用部分(注释/单个注释)的问题,在没有“本地级别”的情况下我们看不到:)

似乎代码是正确的。。尝试检查是否有使用单注释文件名的局部视图。。。也可以使用collection来代替循环

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

您以错误的方式将参数传递给分部。将其更新为以下内容

<%=render partial: 'comments/single_comment', locals: => {:level => level, :comment => comment} %>
{:level=>level,:comment=>comment}%>
现在,您可以按如下方式在部分中访问对象

<% if locals[:level] < level %>
  <% (level - locals[:level]).times do %>
  </div>
  <% end %>
<% end %> 


尝试使用
@comment
@level
在部分作品中,有趣的事情是
comment
变量,
level
没有。这是因为我在块之前设置了它吗?你确定
注释
有一个名为
级别
的列吗?是的,100%确定,只是仔细检查了一下。但这不是
comment.level
问题,而是
level
变量。尝试在视图中调用
comment.level
。我相信问题与变量无关…只需运行
grep-r'single_comment.
views
目录中,它是我唯一使用它的地方(感谢收集提示),不幸的是,没有:(,只需运行grep来仔细检查它。我可以在这里看到“应用程序跟踪”吗?)