Rails视图中的binding.pry:NameError:未定义的局部变量或方法

时间:2016-09-16 14:41:10

标签: ruby-on-rails pry pry-rails

我使用Rails 4和gems byebug,pry-rails,pry-byebug,pry-stack_explorer。

当我在视图文件中替换时:

  <td class="subtotal"><%= order.display_item_total %></td>

  <td class="subtotal"><%= binding.pry %></td>

并在运行rails服务器进程的控制台内输入并在pry断点处停止执行:

order.inspect

我收到错误消息:

NameError: undefined local variable or method `order' for #<ActionView::OutputBuffer:0x007fdf13d99bb8>

当我用order.ins来替换binding.pry时,我会在浏览器中获得订单的对象信息。

我希望我能够在控制台中的pry会话中获取对象顺序。我做错了什么?

编辑: 在控制台输出的开头:

From: /Users/standardnerd/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activesupport-4.2.7.1/lib/active_support/core_ext/string/output_safety.rb @ line 166 ActiveSu
pport::SafeBuffer#safe_concat:

    165: def safe_concat(value)
 => 166:   raise SafeConcatError unless html_safe?
    167:   original_concat(value)
    168: end

这会影响变量的范围吗?

1 个答案:

答案 0 :(得分:1)

该行

<td class="subtotal"><%= binding.pry %></td>

尝试将binding.pry的回复输出到视图,我认为这会触发您的SafeConcatError,我怀疑您没有访问正确的绑定。

更好的做法......

<% binding.pry %>
<td class="subtotal"><%= order.display_item_total %></td>

...在您尝试渲染总数之前立即执行pry