6

エビを使用してpdfを生成しようとしています

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

しかし、これは明らかに機能しません (クラス変数 @@buyer を使用する場合のみ)、私の質問は、変数を Prawn::Document.generate に渡す適切な方法は何ですか?

(これに対する解決策はエビであることは知っていますが、少し実験しています...そしてそれはシナトラプロジェクトでもあります)

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