Ruby on rails 3.1 无法使用Prawn PDF for Ruby on Rails将PDF呈现到浏览器

Ruby on rails 3.1 无法使用Prawn PDF for Ruby on Rails将PDF呈现到浏览器,ruby-on-rails-3.1,prawn,Ruby On Rails 3.1,Prawn,我正在Rails(3.1.1)中最新版本的Prawn库(v1.0.1rc)中创建一个pdf文件,当我运行代码时,它会将pdf生成到应用程序的根目录中 我不要这个。我希望它将输出呈现到用户的浏览器窗口中,而不将其本地保存到服务器 请告诉我如何才能做到这一点。这是我的档案: 视图/foo/show.pdf.erb: <%= require 'prawn' pdf = Prawn::Document.new(:page_size => 'LETTER', :page_layout =&

我正在Rails(3.1.1)中最新版本的Prawn库(v1.0.1rc)中创建一个pdf文件,当我运行代码时,它会将pdf生成到应用程序的根目录中

我不要这个。我希望它将输出呈现到用户的浏览器窗口中,而不将其本地保存到服务器

请告诉我如何才能做到这一点。这是我的档案:

视图/foo/show.pdf.erb

<%=

require 'prawn'

pdf = Prawn::Document.new(:page_size => 'LETTER', :page_layout => :landscape, :margin => 50, :top_margin => 20, :bottom_margin => 50)

.....

render_file("foo.pdf")

%>
class AuditsController < ApplicationController
  before_filter :authenticate_user!
  layout 'application'
  can_edit_on_the_spot
  respond_to :html, :xml, :js, :pdf

  def index
    @audits = Audit.all
    respond_with @audits
  end

  def show
    @audit = Audit.find(params[:id])
    respond_with @audit do |format|
      format.pdf { render :layour => false }
    end
  end
‘字母’,:页面布局=>:横向,:边距=>50,:顶部边距=>20,:底部边距=>50)
.....
render_文件(“foo.pdf”)
%>
控制器/foo_控制器

<%=

require 'prawn'

pdf = Prawn::Document.new(:page_size => 'LETTER', :page_layout => :landscape, :margin => 50, :top_margin => 20, :bottom_margin => 50)

.....

render_file("foo.pdf")

%>
class AuditsController < ApplicationController
  before_filter :authenticate_user!
  layout 'application'
  can_edit_on_the_spot
  respond_to :html, :xml, :js, :pdf

  def index
    @audits = Audit.all
    respond_with @audits
  end

  def show
    @audit = Audit.find(params[:id])
    respond_with @audit do |format|
      format.pdf { render :layour => false }
    end
  end
class AuditsControllerfalse}
结束
结束

Gemfile

gem 'prawn'
/config/initializers/mime_types.rb

Mime::Type.register "application/pdf", :pdf
审核控制器

def show
  @audit = Audit.find(params[:id])
  respond_to do |format|
    format.html
    format.pdf do
      pdf = Prawn::Document.new
      pdf.text "This is an audit."
      # Use whatever prawn methods you need on the pdf object to generate the PDF file right here.

      send_data pdf.render, type: "application/pdf", disposition: "inline"
      # send_data renders the pdf on the client side rather than saving it on the server filesystem.
      # Inline disposition renders it in the browser rather than making it a file download.
    end
  end
end
我曾经在Rails 3.1之前使用过
prawnto
gem,但是如果没有一点黑客攻击,它就不能工作了。这是一种通过直接访问Prawn来实例化和显示3.1中PDF对象的更简洁的方法

我直接从Ryan Bates的一位同事那里学到了这项技术。从那以后我一直在用它。你可以看那一集。他更详细地介绍了子类化Prawn和将PDF生成代码移出控制器。还显示了许多有用的对虾方法,让你开始。强烈推荐


很多剧集都是免费的,但这部经过修改的《对虾》剧集只是付费订阅的剧集之一。不过,以每月9美元的价格,订阅很快就能为自己付费。

我发现将pdf发送到客户端浏览器的最佳方式是将下载内容放入链接中。通常,您需要在表单提交后生成pdf,但也需要重定向到其他页面

您不能同时重定向和发送pdf,但您可以重定向并提供下载链接,如下所示:

首先将
gem'prawn'
添加到您的gem文件中。捆然后执行以下操作:

链接到视图中的特殊打印操作

<%= link_to 'print ticket', print_ticket_path %>
发送输出文件的操作(根据需要更改):


谢谢你,维卡什。这当然有效,我同意订阅点-非常值得!有没有一种方法可以隐式地做到这一点?