【问题标题】:Passing multiple variables to partial将多个变量传递给部分
【发布时间】:2016-03-28 17:14:42
【问题描述】:

我在第 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 %> 

知道这里有什么问题吗?

【问题讨论】:

  • 使用@comment@level 尝试在您的部分内部可能
  • 有趣的是 comment 部分作品中的变量,level 没有。这是因为我在block之前设置的吗?
  • 你确定Comment 有一个名为level 的列吗?
  • 是的,100% 确定,只是仔细检查了一遍。但这不是comment.level 问题,而是level 变量。
  • 尝试在您的视图中调用comment.level。我认为问题与变量无关...

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

看起来这段代码应该可以工作(不太好,但应该可以工作) 我认为您在代码的某些部分的其他地方使用您的部分 (cmets/single_comment) 的问题是我们没有看到没有“本地级别”:)

【讨论】:

  • 不幸的是没有:(,只需运行 grep 仔细检查它。
  • 我可以在这里看到“应用程序跟踪”吗?)
【解决方案2】:

似乎代码是正确的 .. 尝试检查您是否有任何使用 single_comment 文件名的部分视图...您也可以使用集合代替循环

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

【讨论】:

  • 只需在views 目录中运行grep -r 'single_comment' .,这是我唯一使用它的地方(感谢收藏提示)
【解决方案3】:

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

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

现在您可以按如下方式访问部分对象

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2011-06-09
    • 2015-11-06
    • 1970-01-01
    • 2020-10-03
    相关资源
    最近更新 更多