4

我有一个带有 , 的用户模型has_one_attached :avatar,使用ActiveStorage. Avatar 是可选的,但是当它不存在时,我想显示一个默认值。我将所有附件存储在 Amazon S3 上,并且更喜欢将默认附件存储在那里。

如果我也能够在默认头像上使用变体方法,我会更喜欢。

user.avatar.variant(resize: "100x100")

关于如何实现这一目标的任何建议?我可以创建某种未链接到任何特定记录的默认附件并在头像不存在时使用它吗?

4

2 回答 2

1

无需附加默认图像,只需检查是否附加了图像,如果没有,则显示默认图像。该present?方法在这种情况下不起作用,请attached?改用。

def display_avatar(user)
  if user.avatar.attached?
    user.avatar
  else
    'default.png'
  end
end
于 2018-06-12T12:37:55.983 回答
-1

有两种方法,

  1. 默认

在模型中使用这个,(假设您使用的是回形针宝石)

:default_url => "/assets/:style/missing.jpeg"

2.手册

您必须添加辅助方法,如下所示,

  def avatar_check user
      if user.avatar.image.present?
        image_tag user.image_url :thumb
      else
        image_tag 'default.jpg'
      end
    end

将您的 default.jpg 保存在资产中。

在下面的视图调用中,

User.all.each do |u|
= avatar_check u

而且我不确定variant

于 2018-03-30T12:52:31.103 回答