Rails5:图像和图像循环不会显示在电子邮件中



我在邮件中有这个:

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

在电子邮件模板中,我有这样的:

<%= image_tag attachments['logo.png'].url %>

它工作得很好,徽标确实出现在电子邮件中。

现在这是奇怪的部分,我有另一个图像,它不在资产管道中,但存储在数据库中,还有一个其他图像的循环存储在数据库。他们都没有出现在电子邮件中。电子邮件顺利通过,没有任何错误。你知道可能出了什么问题吗?我该如何调试它?

<%= 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

然后在您的邮件视图中,您可以再次迭代所有的@attachments,并使用正确的attachments.inline[...],类似

<% @attachments.each do |attachment| %>
<%= image_tag attachments.inline[attachment.image.original_filename].url %>
<% end %>

注意:我不完全确定这里的正确语法(你使用images,但我认为它应该是单数?你也应该检查一下你的图像的最佳唯一方式是什么,也许original_filename不理想,你也可以只使用attachmentid

最新更新