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

Kas*_*ail 8 ruby-on-rails wicked-pdf

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

  <%= wicked_pdf_image_tag(@image.snap.url(:original)) unless @image.blank? %>
Run Code Online (Sandbox Code Playgroud)

它给了我这个未知的错误

      ActionView::Template::Error (undefined method `pathname' for nil:NilClass):
Run Code Online (Sandbox Code Playgroud)

而puts @ image.inspect给了我正确的路径

       "/system/snaps/7/original/flake.jpg"
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮忙

谢谢....

rup*_*ray 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
Run Code Online (Sandbox Code Playgroud)


在视图页面中,您要添加图像写入:

<%= wicked_pdf_image_tag_for_public @logo.url(:small) %>
Run Code Online (Sandbox Code Playgroud)

@ logo.url通过paperclip存储公共图像路径.

我希望这会有所帮助.


Uni*_*key 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 时不必调用网络流量,那么它的渲染速度会快得多。