8

嗨,我在生成 pdf 时保存图像后使用 wicked_pdf 生成图像,并使用此标签显示这样的图像

  <%= wicked_pdf_image_tag(@image.snap.url(:original)) unless @image.blank? %>

它给了我这个未知的错误

      ActionView::Template::Error (undefined method `pathname' for nil:NilClass):

而 puts @image.inspect 在下面给我正确的路径

       "/system/snaps/7/original/flake.jpg"

任何人都可以帮助

谢谢....

4

3 回答 3

8

我也面临同样的问题。在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 给出由回形针存储的公共图像路径。

我希望这会有所帮助。

于 2012-12-20T07:10:09.797 回答
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 时不必调用网络流量,它将渲染得更快。

于 2012-09-06T12:35:34.563 回答
2

我遇到了同样的问题,事实证明 WicketPdf 帮助程序用于您的应用程序提供的资产,而不是上传的附件。您唯一需要做的就是添加主机。您可以通过URI.join在图像上执行此操作-url 结合request.url..

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

= image_tag( URI.join( request.url, model.attachment.url ) )
于 2013-01-23T09:44:27.523 回答