我正在尝试使用Prawn生成PDF报告,我可以通过传递单个ID使其很容易地对表演 Action 进行报告,但是我想在其中包含每条记录。就像标准的Rails脚手架索引页。使用rails看起来像这样:

<% @customer.each do |customer| %>
<%= customer.id %>
<%= customer.name %>
<%end%>

简单的!

但是我不确定如何用Prawn来做到这一点。

就像是:
def index
 @customer = Customer.all
  respond_to do |format|
  format.html
   Prawn::Document.generate("customer_list.pdf") do |pdf|
   pdf.text "#{@customer.id} "
    pdf.text "#{@customer.name} "
       end
    end
end

这显然是不对的。

有任何想法吗?谢谢你。

最佳答案

使用大虾很容易做到Gemfile => gem'prawn',捆绑

假设您有客户模型:

customers_controller.rb

def show
   @customer = Customer.find(params[:id])
   respond_to do |format|
     format.html
     format.pdf do
        pdf = CustomerPdf.new(@customer)
        send_data pdf.render, filename: "customer_#{id}.pdf",
                              type: "application/pdf",
                              disposition: "inline"
     end
   end
end

然后只需在应用程序目录下创建 pdfs 文件夹,然后创建 customer_pdf.rb 文件
class CustomerPdf< Prawn::Document

  def initialize(customer)
    super()
    @customer = customer
    text "Id\##{@customer.id}"
    text "Name\##{@customer.name}"
  end

end

show.html.erb
  <div class="pdf_link">
    <%= link_to "E-version", customer_path(@customer, :format => "pdf") %>
  </div>

编辑:

并且不要忘记将pdf包含在 config/initializers/mime_types.rb
Mime::Type.register "application/pdf", :pdf

10-08 18:56