ruby-on-rails WickedPDF模板image_tag / wicked_pdf_image_tag仅在Rails API上不工作

im9ewurl  于 2023-10-21  发布在  Ruby
关注(0)|答案(4)|浏览(98)

我正在尝试使用Wicked PDF生成PDF。到目前为止,一切都很顺利,但当我试图添加图像时,我得到的都是空白框。我的图像是在../app/assets/images/foo.png../public/images/foo.png用于测试目的。
据我所知,wicked_pdf_image_tag('foo.png')将输出<img src="file:///home/users/my_username/my_app_name/public/images/foo.png">,所以我在/public/images中有我的图像,下面的代码应该可以工作:

<%= wicked_pdf_image_tag("foo.png", width: 100, height: 100) %>

……但它就是没有,它只给了我一个空白的盒子。我也尝试了以下所有方法:

<%= image_tag Rails.root.join("app/assets/images/foo.png"), width: 100, height: 100 %>
    <img src="<%= Rails.root.join("app/assets/images/foo.png")%>" width="100" height="100">
    <%= image_tag Rails.root.join("public/images/foo.png"), width: 100, height: 100 %>
    <img src="<%= Rails.root.join("public/images/foo.png")%>" width="100" height="100">
    <%= wicked_pdf_image_tag("foo.png", width: 100, height: 100) %>
    <img src="<%= "images/foo.png"%>" width="100" height="100">

所有生成的都是这个

任何帮助都是感激不尽的。Thanks in advance

更新:

我认为有一点很重要,那就是Rails应用程序只支持API。也就是说,我在我的.erb文件中添加了以下代码:

<%= image_tag image_url("foo.png"), width: 100, height: 100 %>

这本身并不起作用,但如果我将application_controller.rb类从:

class ApplicationController < ActionController::API

收件人:

class ApplicationController < ActionController::Base

这是我发现的唯一一种让图像出现的方法。如果有人能给予这方面的见解,我将不胜感激。

hmae6n7t

hmae6n7t1#

时间不知道你...我希望你没事...尝试在应用程序控制器中添加以下内容:

class ApplicationController <ActionController::API
   include ActionController::Helpers
   #....
end

在那之后

<%= image_tag("foo.png", size: "100")  %>
6yt4nkrj

6yt4nkrj2#

我以前也遇到过这个问题,如果我记得很清楚的话,我的问题是:
或者是你对wicked_pdf_image_tag的解释方式有问题,你不应该像这样使用任何括号:
<%= wicked_pdf_image_tag 'foo.png', class: "my-class", size: "50x50" %>
或者使用您正在使用的wicked_pdf二进制文件的版本

o7jaxewo

o7jaxewo3#

我终于把它修好了。不需要修改application_controller.rb类。我所要做的就是指定图像的主机,然后像这样构造URL的其余部分:

wicked_pdf_image_tag("localhost:3000#{image_url("foo.png")}")

当然,一旦应用程序开始生产,主机就会改变。为此,我创建了一个帮助器来管理图像URL:

def manage_image_url
    return case Rails.env
    when 'development' then 'http://localhost:3000'
    when 'develop' then 'https://yourpagehere.com'
    else 'https://yourotherpagehere.com'
    end
end

在生成PDF的控制器中,我将该方法的结果作为变量传递,最终代码应该如下所示:

wicked_pdf_image_tag("#{manage_image_url}#{image_url("foo.png")}")

image_tag方法也可以工作。**请注意,如果您的Rails应用程序不是API专用的,您可能不需要这样做。**我仍然不确定是什么原因导致图像不显示,如果您尝试从资产或公共文件夹加载它们,但我的猜测是,它与API专用应用程序的工作方式有关。祝你今天愉快!

yqkkidmi

yqkkidmi4#

帮我解决了

<%= wicked_pdf_image_tag(asset_url(row["image_kind"]), { size: "100x100" }) %>

相关问题