Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 已附加\u一个\u时的默认附件_Ruby On Rails_Amazon S3_Rails Activestorage - Fatal编程技术网

Ruby on rails 已附加\u一个\u时的默认附件

Ruby on rails 已附加\u一个\u时的默认附件,ruby-on-rails,amazon-s3,rails-activestorage,Ruby On Rails,Amazon S3,Rails Activestorage,我有一个带有的用户模型,它附带了一个:avatar,使用ActiveStorage。 头像是可选的,但当它不存在时,我想显示一个默认值。我将所有附件存储在AmazonS3上,并且更愿意将默认附件也存储在那里 我更希望我能在默认的化身上使用不同的方法 user.avatar.variant(resize: "100x100") 对如何实现这一目标有何建议?我是否可以创建某种默认附件,该附件不链接到任何特定记录,并在化身不存在时使用该附件?有两种方法 违约 在模型中使用此选项(假设您使用的是回形针

我有一个带有
的用户模型,它附带了一个:avatar
,使用
ActiveStorage
。 头像是可选的,但当它不存在时,我想显示一个默认值。我将所有附件存储在AmazonS3上,并且更愿意将默认附件也存储在那里

我更希望我能在默认的化身上使用不同的方法

user.avatar.variant(resize: "100x100")
对如何实现这一目标有何建议?我是否可以创建某种默认附件,该附件不链接到任何特定记录,并在化身不存在时使用该附件?

有两种方法

  • 违约
  • 在模型中使用此选项(假设您使用的是回形针)

    :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
    

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

    def display_avatar(user)
      if user.avatar.attached?
        user.avatar
      else
        'default.png'
      end
    end
    

    我没有使用papercip,所以第一种方法很不幸是不可行的。第二种方法也不起作用,因为它不适用于
    variant
    ,我正在创建一个API,所以image\u标记不可用。使用ActiveStorage。该解决方案的问题是,我无法访问变量,而且它也没有存储在S3上(可能是硬编码的),只需访问视图中的variant方法即可。我不会将默认值存储在S3上,只是将其作为资产包含。