wicked_pdf_image_tag给出了图像的未定义路径名

时间:2012-08-29 14:35:40

标签: ruby-on-rails wicked-pdf

我正在使用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"

任何人都可以提供帮助

...谢谢

3 个答案:

答案 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.joinrequest.url ..

相结合

以下是一个适用于PDF生成的示例:

= image_tag( URI.join( request.url, model.attachment.url ) )