私はこれをコントローラーに持っています。HTMLを生成するためにビューが必要です。HTMLをFlyingSaucerを使用してPDFに変換します( JRubyを使用しています)。その後、これはクライアントに返されます。
def show
@cs_agreement = CsAgreement.find(params[:id])
respond_to do |format|
format.pdf do
# TODO there must be a better way of getting the path to the view!
report_template = ERB.new(File.new("app/views/agreement_document/client_agreement.erb"), nil, "%<")
created_report = report_template.result(binding)
send_data( FlyingSaucer::create_pdf(created_report), :filename => "agreement.pdf",
:type => "application/pdf",
:disposition => 'inline')
end
end
これが私にできる最善の方法です...ERBを使用して手動でhtmlを生成する方法しか理解できないため、データを取得してFlyingSaucerに送信してから戻ることができます。
この方法は、ヘルパーメソッドにアクセスできないことも意味しているようです。
Railsでhtmlを生成し、それをインターセプトしてpdfに変換してから戻る方法はありませんか?レンダリング関数は、すべてを1つに生成して返すようです。