我收集了pdfs文件并将其保存到文件中。我为show动作创建了这个,所以当我克隆链接时它生成pdf并将它们存储在公共文件夹中:
def show
add_breadcrumb "Inovice details"
respond_to do |format|
format.html
format.pdf do
render :pdf => "file_name", :save_to_file => Rails.root.join('public', "Invoice no. #{@invoice.format_id}.pdf")
end
format.csv {send_data Invoice.where(id: @invoice.id).to_csv,
filename: "Invoice no. #{@invoice.format_id}.csv"}
end
end
现在我想创建相同的功能,但是要收集对象。例如,我有10张发票,我想要所有这些发票生成pdf并将其保存到公共文件夹。我正在尝试这样的事情:
def index
@invoices = @company.invoices
respond_to do |format|
format.html
format.js
format.csv { send_data @invoices.to_csv }
format.pdf do
@invoices.each do |invoice|
render :pdf => "file_name", :save_to_file => Rails.root.join('public', "Invoice no. #{invoice.format_id}.pdf")
end
end
end
authorize @invoices
end
但它没有用。我不知道如何解决这个问题。我会感激你的每一个帮助。
答案 0 :(得分:3)
您无法在同一请求中发送多个PDF。
我认为最好的解决方案是在后台作业中生成PDF(https://github.com/mileszs/wicked_pdf/wiki/Background-PDF-creation-via-delayed_job-gem)并显示一个HTML页面,其中包含指向所有PDF的链接。
如果这对你不起作用,你可以将所有内容合并到一个大的PDF文件中。