ruby-on-rails - Rails Wicked PDF - 如何在保存记录后下载 pdf 文件并像往常一样继续重定向?
问题描述
我有一个表单,我想强制用户使用该新记录的wicked_pdf gem 下载 pdf 文件/版本,其中包含一些带有提交按钮的内容Save and Download
。目前,一旦用户单击Save and Download
,文件就会下载,但页面静止不动,不会像往常一样重定向到其显示页面。由于下面的代码示例,我现在应该是这样的。然而,我不知道如何实现我想要的,保存 -> 下载 PDF -> 重定向,或者可以保存 -> 重定向 -> 下载 PDF。
假设我有orders_controller.rb
以下内容actions
。
def create
@order = Order.new(order_params)
if @order.save
redirect_to order_path(@order, format: :pdf)
else
render :new
end
end
def show
respond_to do |format|
format.html do
@order = Order.find(params[:id])
end
format.pdf do
render pdf: 'New Order',
template: 'orders/show.pdf.haml',
page_size: 'A4',
layout: 'pdf_design.haml',
disposition: 'attachment'
end
end
end
解决方案
使用下面的代码并将您的实例变量传递给locals
.
ac = ActionController::Base.new()
pdf_string = ac.render_to_string pdf: 'New Order', template: 'orders/show.pdf.haml', encoding: "UTF-8", locals: {order: @order}
调整您的视图以便将您的本地分配给order
视图实例变量或直接使用order
然后像这样分配文件:
file = StringIO.new(pdf_string)
然后用任何宝石(回形针,Carrierwave ...)上传它
推荐阅读
- javascript - 错误:预计没有打开的请求,发现 1 (Angular)
- jquery - 使用 jQuery 数据属性在伪元素的内容中插入新行
- swift - WKWebView 不能通过键盘交互
- android - 如何连接到 SSID 并获取与接收器的连接状态
- python-3.x - 如何在 cricinfo 中抓取所有测试匹配详细信息
- python - 堆算法产生相同的排列两次
- excel - 计算满足条件的日期数
- django - 如何从数据库中获取现有值到 django admin 的 django 模型字段中
- ansible - 使用带有多个变量的 with_list 的 Ansible 循环值
- python - Microsoft Visual Studio 14 - 退出状态为 2 失败