首页 > 解决方案 > Rails 6 + Active Storage:设置可以有变体的默认图像

问题描述

我需要为活动存储附件设置默认图像,以防没有上传图像。

我可以制作一个简单的助手来调用图像,/assets/images但在这种情况下,这些图像不适用于变体(例如<%= image_tag image.variant(resize_to_fill: [50,50]) %>

浏览网页,我发现这篇有趣的文章提供了一些线索:https ://gorails.com/forum/how-do-i-set-and-use-a-default-image-with-active-storage ,但它对我来说还不够。

before_create回调附加图像对我来说听起来有点过头了,因为它将多次将相同的图像上传到存储中。

标签: ruby-on-railsrails-activestorageruby-on-rails-6minimagick

解决方案


创建一个获取图像的方法。请遵循以下代码段:

  def fetch_cover_image
    if self.cover_image.attached?
      Rails.application.routes.url_helpers.rails_blob_url(self.cover_image, 
       host: Rails.application.credentials[Rails.env.to_sym][:host])
    else
      ActionController::Base.helpers.image_url('cover_image.jpg')
    end
  end

推荐阅读