Wicked PDF 仅在页面刷新时生成 pdf
Wicked PDF generating pdf only on page refresh
我正在开发一个网络应用程序,我有这个 "Registration" 页面。我想在访问展示页面时呈现一个pdf页面。但是当我点击显示按钮时,一个正常的 html 页面被加载并且内容就像一个转储,全是乱码(这里是一个内容的要点:https://gist.github.com/anonymous/0806200b7ca31bba35d3a514a7ff90e6)。但是,当我刷新页面时,它会完美呈现 pdf。
我检查了 url 和参数是否有任何差异,但一切都是一样的。我还检查了实例变量,它们是一样的。我用谷歌搜索了这个问题,但没有找到任何相关内容。
这里是展示动作中的渲染代码:
respond_to do |format|
format.html do
render pdf: 'customer_print_out.pdf',
file: "#{Rails.root}/app/views/pdf/customer_print_out.pdf.erb",
page_size: 'A4',
encoding: 'UTF-8'
end
end
请注意,我正在 pdf 文件中生成条形码。当我刷新页面时它也正确加载,当我删除条形码生成代码时我仍然遇到同样的问题。
正在使用:
Rails v4.2.6, wicked_pdf v1.1.0, puma v3.6.0
非常感谢任何帮助或指点。
我认为你应该使用 format.pdf
而不是 format.html
format.pdf do
render pdf: 'customer_print_out.pdf',
file: "#{Rails.root}/app/views/pdf/customer_print_out.pdf.erb",
page_size: 'A4',
encoding: 'UTF-8'
end
也不要忘记在您的按钮代码中将格式指定为 pdf
,例如
<%= link_to('Show', your_show_action_path(format: :pdf)) %>
为了呈现 pdf,请执行以下操作:
在 config/initializers/mime_types.rb 文件中注册 PDF mime 类型:
Mime::Type.register "application/pdf", :pdf
在您的控制器中执行以下操作:
class YourController < ApplicationController
def show
@product = Product.first
respond_to do |format|
format.html
format.pdf do
render pdf: 'customer_print_out.pdf',
file: "#{Rails.root}/app/views/pdf/customer_print_out.pdf.erb",
page_size: 'A4', encoding: 'UTF-8'
end
end
end
end
请求应采用pdf
格式,例如:your_controller_path(format: :pdf)
我正在开发一个网络应用程序,我有这个 "Registration" 页面。我想在访问展示页面时呈现一个pdf页面。但是当我点击显示按钮时,一个正常的 html 页面被加载并且内容就像一个转储,全是乱码(这里是一个内容的要点:https://gist.github.com/anonymous/0806200b7ca31bba35d3a514a7ff90e6)。但是,当我刷新页面时,它会完美呈现 pdf。
我检查了 url 和参数是否有任何差异,但一切都是一样的。我还检查了实例变量,它们是一样的。我用谷歌搜索了这个问题,但没有找到任何相关内容。
这里是展示动作中的渲染代码:
respond_to do |format|
format.html do
render pdf: 'customer_print_out.pdf',
file: "#{Rails.root}/app/views/pdf/customer_print_out.pdf.erb",
page_size: 'A4',
encoding: 'UTF-8'
end
end
请注意,我正在 pdf 文件中生成条形码。当我刷新页面时它也正确加载,当我删除条形码生成代码时我仍然遇到同样的问题。
正在使用:
Rails v4.2.6, wicked_pdf v1.1.0, puma v3.6.0
非常感谢任何帮助或指点。
我认为你应该使用 format.pdf
而不是 format.html
format.pdf do
render pdf: 'customer_print_out.pdf',
file: "#{Rails.root}/app/views/pdf/customer_print_out.pdf.erb",
page_size: 'A4',
encoding: 'UTF-8'
end
也不要忘记在您的按钮代码中将格式指定为 pdf
,例如
<%= link_to('Show', your_show_action_path(format: :pdf)) %>
为了呈现 pdf,请执行以下操作:
在 config/initializers/mime_types.rb 文件中注册 PDF mime 类型:
Mime::Type.register "application/pdf", :pdf
在您的控制器中执行以下操作:
class YourController < ApplicationController
def show
@product = Product.first
respond_to do |format|
format.html
format.pdf do
render pdf: 'customer_print_out.pdf',
file: "#{Rails.root}/app/views/pdf/customer_print_out.pdf.erb",
page_size: 'A4', encoding: 'UTF-8'
end
end
end
end
请求应采用pdf
格式,例如:your_controller_path(format: :pdf)