将多个变量传递给partial

时间:2013-02-12 18:22:57

标签: ruby-on-rails ruby ruby-on-rails-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 %> 

知道这里有什么问题吗?

3 个答案:

答案 0 :(得分:2)

看起来这段代码应该可行(它不是很好,但应该可以工作) 我认为你在部分代码中使用你的部分(评论/单一评论)的问题,如果没有“本地级别”,我们没有看到:)

答案 1 :(得分:1)

似乎代码是正确的..尝试检查你是否有任何使用single_comment文件名的部分视图...而且你也可以使用集合而不是做一个循环

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

答案 2 :(得分:0)

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

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

现在您可以按部分访问部分中的对象

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