【问题标题】:Prawn can't find locally stored image大虾找不到本地存储的图像
【发布时间】:2016-02-03 08:21:54
【问题描述】:

我正在尝试使用 Prawn 将本地存储的图像渲染为 PDF。这就是我在课堂上正在做的事情..

def to_pdf
    cover = book.cover_url
    text cover
    image cover
    render
end

.. 期望它渲染图像路径,然后是图像本身。但是我得到的是一个 ArgumentError,它给了我路径,“/system/images/image.jpg not found”,当我将它粘贴到地址栏中时,它确实向我显示了图像。 book.cover_url 将相对路径输出为字符串。此路径是正确的 - 如果我在视图中使用相同的代码,则会显示图像。

这也行不通:

cover = "#{Rails.root}#{book.cover_url}"
image cover

这给了我一个类似的错误(如预期的那样):

cover = "#{Rails.root}#{book.cover_url}"
image open(cover)

但这确实有效:

cover = "http://localhost/system/images/image.jpg"
image open(cover)

这样:

cover = "http://ecx.images-amazon.com/images/I/41EPYSumZvL._SX329_BO1,204,203,200_.jpg"
image open(cover)

Prawn 似乎无法使用它提供的路径找到图像。它快把我逼疯了。从文档来看,这一切都应该非常简单。

【问题讨论】:

    标签: ruby-on-rails ruby prawn


    【解决方案1】:

    Rails.root 为您提供 Rails 应用程序在文件系统上的文件路径——这与文件的 URL 无关。您应该改写 .cover_url 以提供绝对 URL,并创建一个输出相对路径的 .cover_path 方法。 (这更符合路径和资产助手在 Rails 中的工作方式。)

    如果您的图片可通过资产管道获得,您将使用 url_to_image

    【讨论】:

      猜你喜欢
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多