Скачать несколько PDF, используя Wicked PDF
Как я могу загрузить несколько PDF с использованием Wicked-PDF
Ниже приведена строка кода, которую я использую здесь,
@awb_orders = Spree::Order.where('created_at >= ? AND created_at <= ?', DateTime.now-1.month, DateTime.now).where(:state => 'complete').order("created_at DESC")
@awb_orders.each do |order|
@order = order
respond_to do |format|
format.html
format.pdf do
render pdf: "file_name_#{DateTime.now}",
save_to_file: Rails.root.join('public', "invoice_#{DateTime.now}.pdf")
end
end
end
Я получаю следующий результат
Рендеринг и / или перенаправление вызывались несколько раз в этом действии...... "redirect_to(...) and return".
Может кто-нибудь помочь мне, где я иду не так?
1 ответ
В обычном контроллере Rails вы не можете вызвать render
метод более одного раза, и здесь вы делаете это для столько заказов, сколько у вас есть.
Вместо этого, я думаю, вы захотите либо реорганизовать свои данные так, чтобы все счета-фактуры были сгенерированы в одном шаблоне PDF, либо вы сгенерировали отдельные PDF-файлы вне цикла response_to / render, а затем слили их вместе в один PDF или ZIP-файл, содержащий их все.
Вот примерный план того, как это может выглядеть:
@awb_orders = Spree::Order.where('created_at >= ? AND created_at <= ?', DateTime.now-1.month, DateTime.now).where(:state => 'complete').order("created_at DESC")
respond_to do |format|
format.html
format.pdf do
cpdf = CombinePDF.new
@awb_orders.each do |order|
pdfdata = render_to_string(pdf: "order_#{order.id}"
cpdf << CombinePDF.parse(pdfdata)
end
send_data cpdf.to_pdf, filename: "combined.pdf", type: "application/pdf"
end
end