2016-10-13 31 views
0

私はPrawnテンプレートとPrawn pdfsを作成する別のテンプレートを使用してレポを作成しようとしています。procを使用してPrawnにデータを渡す方法

# Repo A 
require 'template_from_repo_b' 
p = get_my_proc # from repo b 
Prawn::Document.new(&p).render 

# Repo B 
def get_my_proc 
    proc do 
    text 'hello world' 
    end 
end 

そして、それは動作します:

はこのようなものを想像してみてください。しかし、どうすればそのデータにデータを渡すことができますか?それは可能ですか?

PHPのような変数にコードをロードする方法があるのだろうかと思います。

# File to include 
<?php 
return 'abc'; 

# Usage 
$abc = include 'include.php'; 

私は変数に直接procをロードすることができました。私は可能な限りprocテンプレートを簡素化できるようにしたい。

ありがとうございました!

+0

「new」はprocを取りません。それはブロックを取るので 'generate'かもしれません。 –

+0

です。私はもう一度やり直した。しかし、私はDocument.new(&p)のprocの前に&がありませんでした。 –

答えて

0

解決策が見つかりました。少し奇妙な気がするので、私はそれを使用するかどうかはわかりません。私はルビープロではありません。

require 'prawn' 

def make_proc(data) 
    proc do 
    text data[:greet] 
    end 
end 

data = { greet: 'Hello World' } 
p = make_proc data 
bytes = Prawn::Document.new(&p).render 
open('test.pdf', 'wb') { |f| f.puts bytes } 
+0

それについては何も変わりません。これは暗黙のブロックとしてprocを渡す方法です。 –

関連する問題