Ruby on rails 将多个变量传递给部分
我在部分行#1中得到错误: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 %
未定义的局部变量或方法“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来仔细检查它。我可以在这里看到“应用程序跟踪”吗?)