使用Prawn与Sinatra

时间:2015-02-13 18:14:01

标签: html ruby forms web sinatra

  

如何使用Prawn在Sinatra中生成表格数据的PDF?

我的表单位于网站的索引操作,但Prawn无法识别传入的变量。我在http://prawnpdf.org/docs/0.11.1/Prawn/Document.html的文档中找到了此代码。

get '/download' do 

  content = "Hello World"

  Prawn::Document.generate "example.pdf" do |pdf|
    pdf.font "Times-Roman"
    pdf.draw_text content, :at => [200,720], :size => 32
  end
end 

现在这很好,但是当我尝试从这样的参数传递我的变量时:

post '/resume' do 
  @name = params.fetch 'name' 
  ...
end 

然后,如果我将其添加到/ download路线中,如下所示:

get '/download' do 

  Prawn::Document.generate "example.pdf" do |pdf|
    pdf.font "Times-Roman"
    pdf.draw_text @name, :at => [200,720], :size => 32
  end
end 

它什么都不会画。另外,奇怪的是,它生成了一个pdf文件,但没有重定向到它,我必须手动加载它。

真的坚持这个 - 建议?

1 个答案:

答案 0 :(得分:1)

Every request creates a new instance of your Sinatra app to serve it。因此,实例变量在两个不同的请求中不会相同。您需要使用多种方法之一来保存数据(cookie,本地存储,数据库,缓存等),或者您需要将Prawn逻辑放在POST路由中。