wicked_pdf_image_tag 查找图像时解析到 public 文件夹
wicked_pdf_image_tag resolves to public folder when looking for images
我想呈现用户以 PDF 格式上传的图像。
我正在将图像保存到当前 Rails 目录 public
文件夹中。
图像正在保存在 public 文件夹中。
在开发中一切正常,但在生产中,它认为图像是资产的一部分并引发 "image is not in the assets" 错误。
在开发中,它正在查看 public 文件夹中的正确路径。
在使用以下代码的生产中,它查看图像的 public/public
。
这是我认为呈现 PDF 的代码。
<% @images.each do |image| %>
<% if Rails.env != "development" %>
<%= wicked_pdf_image_tag ("public/#{image.original_filename}")%>
<% else %>
<%= wicked_pdf_image_tag(image.original_filename)%>
<% end %>
<% end %>
我尝试使用
wicked_pdf_image_tag("public/#{image.original_filename}")
但它 returns 一个资产错误,因为它在 public/assets 文件夹中查找。
我也试过使用
wicked_pdf_image_tag("/public#{image.original_filename}")
但它会生成 public/public 文件夹,图像不在其中,而是向上一层。
当我尝试检索图像时,我希望 wicked_pdf_image_tag
查看图像的 public/
文件夹。
wicked_pdf_image_tag
是 shorthand for image_tag
的 shorthand,资产路径使用邪恶的 pdf 规则解析(参见 wicked_pdf/wicked_pdf_helper/assets.rb):
def wicked_pdf_image_tag(img, options = {})
image_tag wicked_pdf_asset_path(img), options
end
def wicked_pdf_asset_path(asset)
if (pathname = asset_pathname(asset).to_s) =~ URI_REGEXP
pathname
else
"file:///#{pathname}"
end
end
因此,当您需要一些变化时,没有什么能阻止您直接使用 image_tag
和正确的图像 url/path。问题是 wicked_pdf 需要本地文件系统的绝对文件路径才能呈现(对于 html 预览,需要纯图像 url):
image_tag "file://#{File.expand_path("public/your_image_path_goes_here.jpg")}"
另外请注意,original_filename
不是您存储中该文件的名称,它是上传期间客户端计算机上的文件名称。您需要使用存储路径,这取决于您的上传库,例如对于 Paperclip 这将是 yourmodel.image.path
我想呈现用户以 PDF 格式上传的图像。
我正在将图像保存到当前 Rails 目录 public
文件夹中。
图像正在保存在 public 文件夹中。
在开发中一切正常,但在生产中,它认为图像是资产的一部分并引发 "image is not in the assets" 错误。
在开发中,它正在查看 public 文件夹中的正确路径。
在使用以下代码的生产中,它查看图像的 public/public
。
这是我认为呈现 PDF 的代码。
<% @images.each do |image| %>
<% if Rails.env != "development" %>
<%= wicked_pdf_image_tag ("public/#{image.original_filename}")%>
<% else %>
<%= wicked_pdf_image_tag(image.original_filename)%>
<% end %>
<% end %>
我尝试使用
wicked_pdf_image_tag("public/#{image.original_filename}")
但它 returns 一个资产错误,因为它在 public/assets 文件夹中查找。
我也试过使用
wicked_pdf_image_tag("/public#{image.original_filename}")
但它会生成 public/public 文件夹,图像不在其中,而是向上一层。
当我尝试检索图像时,我希望 wicked_pdf_image_tag
查看图像的 public/
文件夹。
wicked_pdf_image_tag
是 shorthand for image_tag
的 shorthand,资产路径使用邪恶的 pdf 规则解析(参见 wicked_pdf/wicked_pdf_helper/assets.rb):
def wicked_pdf_image_tag(img, options = {})
image_tag wicked_pdf_asset_path(img), options
end
def wicked_pdf_asset_path(asset)
if (pathname = asset_pathname(asset).to_s) =~ URI_REGEXP
pathname
else
"file:///#{pathname}"
end
end
因此,当您需要一些变化时,没有什么能阻止您直接使用 image_tag
和正确的图像 url/path。问题是 wicked_pdf 需要本地文件系统的绝对文件路径才能呈现(对于 html 预览,需要纯图像 url):
image_tag "file://#{File.expand_path("public/your_image_path_goes_here.jpg")}"
另外请注意,original_filename
不是您存储中该文件的名称,它是上传期间客户端计算机上的文件名称。您需要使用存储路径,这取决于您的上传库,例如对于 Paperclip 这将是 yourmodel.image.path