我正在尝试使用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