0

我将 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.inspect 替换 binding.pry 时,我会在浏览器中获取 order 的对象信息。

我希望我应该能够在控制台的 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

这会影响变量的范围吗?

4

1 回答 1

2

线

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

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

最好是做...

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

...所以pry在您尝试渲染总数之前立即执行此操作。

于 2016-09-16T15:54:00.830 回答