Wicked_PDF 模板 image_tag / wicked_pdfimage_tag 不适用于 Rails API-only
WickedPDF template image_tag / wicked_pdf_image_tag not working on Rails API-only
我正在尝试使用 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">
生成的都是这个
感谢任何帮助。提前致谢
更新:
我认为值得一提的是 Rails 应用程序仅 API。也就是说,我在我的 .erb 文件中添加了以下代码:
<%= image_tag image_url("foo.png"), width: 100, height: 100 %>
单独这样做是行不通的,但是如果我将 application_controller.rb class 更改为:
class ApplicationController < ActionController::API
至:
class ApplicationController < ActionController::Base
这是我发现的使图像出现的唯一方法。如果有人能对此提供见解,我将不胜感激。
我终于开始工作了。无需更改 application_controller.rb
class。我所要做的就是指定图像的主机,然后像这样构造 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-only,您可能不需要这样做。 我仍然不确定是什么原因导致出现图像如果您尝试从资产或 public 文件夹加载它们,则不显示,但我的猜测是它与 API-only 应用程序的工作方式有关。祝你有美好的一天!
不知道你的时间......我希望你没事......尝试在你的应用程序控制器中添加这个:
class ApplicationController <ActionController::API
include ActionController::Helpers
#....
end
之后
<%= image_tag("foo.png", size: "100") %>
我过去也遇到过这个问题,如果我没记错的话我的问题是:
您缩进 wicked_pdf_image_tag
的方式有问题,您不应该像这样使用任何括号:
<%= wicked_pdf_image_tag 'foo.png', class: "my-class", size: "50x50" %>
您使用的 wicked_pdf 二进制版本
我正在尝试使用 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">
生成的都是这个
感谢任何帮助。提前致谢
更新:
我认为值得一提的是 Rails 应用程序仅 API。也就是说,我在我的 .erb 文件中添加了以下代码:
<%= image_tag image_url("foo.png"), width: 100, height: 100 %>
单独这样做是行不通的,但是如果我将 application_controller.rb class 更改为:
class ApplicationController < ActionController::API
至:
class ApplicationController < ActionController::Base
这是我发现的使图像出现的唯一方法。如果有人能对此提供见解,我将不胜感激。
我终于开始工作了。无需更改 application_controller.rb
class。我所要做的就是指定图像的主机,然后像这样构造 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-only,您可能不需要这样做。 我仍然不确定是什么原因导致出现图像如果您尝试从资产或 public 文件夹加载它们,则不显示,但我的猜测是它与 API-only 应用程序的工作方式有关。祝你有美好的一天!
不知道你的时间......我希望你没事......尝试在你的应用程序控制器中添加这个:
class ApplicationController <ActionController::API
include ActionController::Helpers
#....
end
之后
<%= image_tag("foo.png", size: "100") %>
我过去也遇到过这个问题,如果我没记错的话我的问题是:
您缩进 wicked_pdf_image_tag
的方式有问题,您不应该像这样使用任何括号:
<%= wicked_pdf_image_tag 'foo.png', class: "my-class", size: "50x50" %>
您使用的 wicked_pdf 二进制版本