【问题标题】:wicked_pdf_image_tag given undefined pathname for imagewicked_pdf_image_tag 给定未定义的图像路径名
【发布时间】:2012-08-24 05:03:36
【问题描述】:

您好,我在生成 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"

谁能帮忙

谢谢....

【问题讨论】:

  • 我尚未验证,但我怀疑它的目的是处理 /assets/images 中的图像而不是 /public 中的文件

标签: ruby-on-rails wicked-pdf


【解决方案1】:

看起来这个错误来自 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 时不必调用网络流量,它将渲染得更快。

【讨论】:

  • 当我将它包含在我的应用程序助手中时给我错误 def wicked_pdf_image_tag(img, options={}) image_tag "file://#{WickedPdfHelper.root_path.join('public', 'images' , img)}", 选项结束错误是 ActionView::Template::Error (未定义的方法 `root_path' for WickedPdfHelper:Module):
  • 尝试“file://#{Rails.root.join('public','images',img)}”完全跳过资产管道。
【解决方案2】:

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

我希望这会有所帮助。

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-07-18
      • 2022-12-05
      • 1970-01-01
      • 2020-05-18
      • 2016-08-22
      • 1970-01-01
      • 2012-05-15
      • 2021-11-13
      • 2018-11-27
      相关资源
      最近更新 更多