我无法让 wicked_pdf 将图像从活动存储显示到 pdf 文件。我是否使用:wicked_pdf_image_tag
或 wicked_pdf_asset_base64
仅image_tag
在 pdf 模板中使用。然后我给一个rails_blob_path(company.logo)
或只是company.logo
给任何其他方法?
问问题
2410 次
4 回答
6
wicked_pdf
在此 GitHub 问题线程中正在进行一些工作以添加 Active Storage 支持
在添加之前(您可以帮忙!),您可以创建一个类似这样的辅助方法(这是上面线程示例的略微修改版本):
# Use like `image_tag(wicked_active_storage_asset(user.avatar))`
def wicked_active_storage_asset(asset)
return unless asset.respond_to?(:blob)
save_path = Rails.root.join('tmp', asset.id.to_s)
File.open(save_path, 'wb') do |file|
file << asset.blob.download
end
save_path.to_s
end
或者,如果您可以在 PDF 创建过程中直接使用 Web 资源:
<img src="<%= @user.avatar.service_url %>">
<img src="<%= @user.avatar.variant(resize: "590").processed.service_url %>">
于 2018-07-03T18:45:18.147 回答
0
我service_url
这样用
image_tag(company.logo.service_url)
更多信息在这里:https ://api.rubyonrails.org/v5.2.0/classes/ActiveStorage/Variant.html#method-i-service_url
于 2018-07-28T01:01:37.457 回答
0
Unixmonkey 建议的解决方案有效,但我不喜欢每次都下载资产,即使它已经存在于tmp
目录中。
这是最适合我的修改版本。我基于 blob 键的路径,这应该确保呈现我们资产的最新版本。Pathname
需要确保为路径创建目录:
# Use like `image_tag(wicked_active_storage_asset(facility.logo))`
def wicked_active_storage_asset(asset)
return unless asset.respond_to?(:blob)
save_path = Rails.root.join('tmp', asset.blob.key)
begin
require 'pathname'
some_path = Pathname(save_path)
some_path.dirname.mkpath
File.open(save_path, 'wb') do |file|
file << asset.blob.download
end
end unless File.exist?(save_path)
save_path
end
于 2020-01-26T19:22:03.687 回答
0
而不是 <%= image_tag url_for(@student_course.try(:avatar)) %> 我使用 <%= image_tag polymorphic_url(@student_course.try(:avatar)) %>
为我工作。
于 2020-07-15T00:41:47.343 回答