我在Rails应用程序中遇到一个非常奇怪的错误。 我正在使用ActiveStorage在S3上存储图像,并且图像有时出现但有时不出现。您可以在这里看到它:https://littlered.life/
如果向下滚动一点,则一张卡片(“瑜伽撤退”)没有缩略图。
我的代码:
<a href="#" style="background-image: url('<%= rails_representation_path(experience.thumbnail) %>')">
experience.rb
def thumbnail
self.cover.variant(resize: "300x300").processed
end
我在做什么错了?
更新
部署后,即使更改与图像无关,问题也会消失(我可以看到图像)。 如果再添加另一张卡,除非再次部署,否则图像不会再次出现。
更新2 我已经找到了问题,但是我不知道如何解决。问题是缓存。它与ActiveStorage无关。该图片指向旧网址,因此未显示。实际上,如果我清除缓存,一切都会正常。
我认为我使用集合片段缓存
<%= render partial: :experience, collection: @experiences, cached: true %>
为什么我更新记录时不更新? 我注意到它不仅不会更新我的图像,而且如果我更改它也不会更新我的标题。
答案 0 :(得分:0)
首先,很棒的应用程序!
第二,您必须签出您的终端。 ActiveStorage不会删除其先前的状态,这意味着,如果将另一个图像添加到现有图像,则会出现错误,因为存储空间不是null。我认为您的“瑜伽”图片在代码中以某种方式已与任何其他上载相关,或者您以错误的方式使用active_storage。
我的建议是运行
attachment.purge_later()
在附加图像之前(在控制器内部)。另外,您在使用turbolinks吗?确保使用
$(document).on(turbolinks:load, function(){})
在运行所有JavaScript之前。
如果这样做没有帮助,请发布用于处理上载内容的控制器,存储位置和配置(请确保不要发布您的凭据!)。
此外,您正在使用什么主机?尝试在图像消失时进入Rails控制台,并获取“瑜伽”图像的ID,看看它是否为空。
最后一件事:访问您的网站时,我可以看到图像。
问候!