我在邮件中有这个:

attachments.inline["logo.png"] = File.read("#{Rails.root}/app/assets/images/logo.png")

在电子邮件模板中,我有以下内容:
<%= image_tag attachments['logo.png'].url %>

它工作正常,徽标确实出现在电子邮件中。

现在这是一个很奇怪的部分,我有另一个不在 Assets 管道中但存储在数据库中的图像,以及一个循环存储在数据库中的其他图像。而且它们都没有出现在电子邮件中。电子邮件通过没有任何错误。知道什么地方可能出问题了,我该如何调试呢?
<%= image_tag @account.image.thumb.url %>
   <% @attachments.each do |attachment| %>
     <%= image_tag attachment.images.thumb.url %>
<% end %>

我正在使用gem carrierwave附加图片,并上传了以下版本:
version :thumb do
  process resize_to_fill: [1024, 768]
end

最佳答案

这里有两个选项:或者您的图像(存储在数据库中)还具有一个面向公众的url,然后您就可以使用它们了。但是很可能它们没有这样做,然后您还必须将图像作为attachments添加到您的电子邮件中,然后在构建电子邮件时使用attachments

因此,在您的邮件中输入类似以下内容的内容:

@attachments.each do |attachment|
  attachments.inline[attachment.image.original_filename] = attachment.image.thumb.read
end

然后在邮件 View 中,您可以再次遍历所有@attachments,并使用正确的attachments.inline[...],例如
<% @attachments.each do |attachment| %>
  <%= image_tag attachments.inline[attachment.image.original_filename].url %>
<% end %>

注意:我不完全确定这里的语法正确(您使用images,但我想它应该是单数形式?还应该检查什么是图像的最佳独特方式,也许original_filename不是理想的,您也可以只使用idattachment

关于ruby-on-rails - Rails 5 : image and loop of images are not showing in email,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58604248/

10-09 18:42