0

私はRails 4をgem 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

これは変数の範囲に影響しますか?

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 に答える