我正在使用wicked_pdf生成图像后,当我生成pdf并使用此标记显示图像时,我保存图像
<%= wicked_pdf_image_tag(@image.snap.url(:original)) unless @image.blank? %>
它给了我这个未知的错误
ActionView::Template::Error (undefined method `pathname' for nil:NilClass):
虽然把@ image.inspect给我正确的路径
"/system/snaps/7/original/flake.jpg"
任何人都可以提供帮助
...谢谢
答案 0 :(得分:7)
我也遇到了同样的问题。
在app/helpers/application_helper.rb
文件中写下以下代码行:
module ApplicationHelper
def wicked_pdf_image_tag_for_public(img, options={})
if img[0] == "/"
new_image = img.slice(1..-1)
image_tag "file://#{Rails.root.join('public', new_image)}", options
else
image_tag "file://#{Rails.root.join('public', 'images', img)}", options
end
end
end
在要添加图像的视图页面中写入:
<%= wicked_pdf_image_tag_for_public @logo.url(:small) %>
@ logo.url通过回形针提供公开存储的图像路径。
我希望这会有所帮助。
答案 1 :(得分:2)
看起来这个错误来自wicked_pdf中的这一行:
https://github.com/mileszs/wicked_pdf/blob/master/lib/wicked_pdf_helper.rb#L59
由于某种原因,find_asset(source)为零。也许您需要与资产管道一起获得一些东西。我承认我还没有很多经验。
但是,你可以看到wicked_pdf_image_tag实际上是一个非常简单的帮手:
https://github.com/mileszs/wicked_pdf/blob/master/lib/wicked_pdf_helper.rb#L14
如果包含的那个不适合您,您可以轻松编写自己的文件并将其放入application_helper.rb中。它正在做的重要事情是为你的图像使用file://路径,因为如果wkhtmltopdf在生成你的PDF时不必调用网络流量,它将会更快地渲染。
答案 2 :(得分:2)
我遇到了同样的问题,结果证明WicketPdf助手是由您的应用程序提供的资产而不是上传的附件。您唯一需要做的就是添加主机..您可以通过执行此操作来执行此操作图片网址上的URI.join
与request.url
..
以下是一个适用于PDF生成的示例:
= image_tag( URI.join( request.url, model.attachment.url ) )