6

我正在尝试使用 Prawn 生成 pdf

@buyer = Buyer.last
Prawn::Document.generate("samle.pdf") do
  text "hello #{@buyer.name} world"
end

但这显然不起作用(仅当我使用类变量 @@buyer 时),我的问题是将变量传递给 Prawn::Document.generate 的正确方法是什么

(我知道解决这个问题的方法是对虾,但我正在尝试一点......而且它也是一个 sinatra 项目)

4

1 回答 1

12

http://rdoc.info/github/sandal/prawn/master/Prawn/Document#generate-class_method看起来,如果您将变量传递到您的块中,它将在当前上下文中进行评估。所以试试:

@buyer = Buyer.last
Prawn::Document.generate("samle.pdf") do |pdf|
  pdf.text "hello #{@buyer.name} world"
end

编辑:更清楚地说,这意味着不是在新的 Prawn::Document 对象中评估块,而是将 Prawn::Document 对象传递到块中。然后在当前对象中评估该块,因此您的实例变量仍在范围内。

于 2011-04-16T09:16:33.060 回答