我的控制器中有这个。我需要我的视图来生成一些 HTML,然后我使用Flying Saucer(我使用 JRuby)将其转换为 pdf。然后将其返回给客户端。
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 的数据。
这种方式似乎也意味着我无法访问任何 Helper 方法。
有没有办法让rails为我生成html并以某种方式拦截它以在返回之前转换为pdf?渲染功能似乎只是生成并返回所有内容..