实例变量在实例方法调用中不可用

时间:2017-10-31 18:37:12

标签: ruby-on-rails ruby variables prawn scopes

鉴于下面的情况,为什么我不能在Prawn块中访问我的@inst变量?

致电:PdfGen.new(' inst')。build

class PdfGen
 @class = "class"

  def initialize(inst)
   @inst = inst
  end

  def build
    @inst  #=> 'inst'
    Prawn::Document.generate() do
      @inst  #=> nil
      @class #=> 'class'
    end
  end

end

1 个答案:

答案 0 :(得分:2)

似乎Prawn::Document.generate()评估代码块在其自己的范围内(例如通过#instance_eval方法),与您对象的范围不同。

您可以在此块中打印puts class来证明这一点。这将为您提供正在发生的事情的图片