binding.pry в представлении Rails: NameError: неопределенная локальная переменная или метод

Я использую Rails 4 с гемами 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>

Когда я заменяю binding.pry на order.inspect, я получаю информацию об объекте заказа в браузере.

Я ожидаю, что смогу получить порядок объектов внутри сеанса 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

Влияет ли это на область действия переменных?


person StandardNerd    schedule 16.09.2016    source источник
comment
Хм, это должно работать.   -  person Sergio Tulentsev    schedule 16.09.2016
comment
Попробуйте заменить <%= binding.pry %> на <% binding.pry %>   -  person John Feltz    schedule 16.09.2016
comment
@Джон, проблема все еще не устранена :(.   -  person StandardNerd    schedule 16.09.2016


Ответы (1)


Линия

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

Пытается вывести ответ от binding.pry в представление, и я думаю, что это вызывает ваш SafeConcatError, и я подозреваю, что вы не обращаетесь к правильной привязке.

Лучше бы сделали...

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

... поэтому выполняйте pry непосредственно перед попыткой отобразить итог.

person SteveTurczyn    schedule 16.09.2016