【问题标题】:How to set default avatar to user in rails?如何在rails中为用户设置默认头像?
【发布时间】:2020-05-31 00:04:21
【问题描述】:

我希望我的用户有一个默认头像。所以我在助手中尝试了这个。

  def show_avatar(user)
    if File.exist?("/public/uploads/users/#{user.id}/avatar.jpg")
        image_tag ("accueil/profile_default.png"), class: 'rounded-circle', alt: "#{user.username}"
    else
      image_tag user.avatar_url, class: 'rounded-circle', alt: "#{user.username}"
    end
  end

但我不明白为什么它不起作用。我也试过 Dir.empty?但也没有结果。 感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails ruby avatar


    【解决方案1】:

    File.exist?("/public/uploads/users/#{user.id}/avatar.jpg") 将从文件系统的根目录检查路径 - 而不是 Rails 应用程序的根目录。你的逻辑也是倒退的。

    def show_avatar(user)
      if File.exist?(Rails.root.join("/public/uploads/users/#{user.id}/avatar.jpg"))
        image_tag user.avatar_url, class: 'rounded-circle', alt: user.username
      else
        image_tag "accueil/profile_default.png", class: 'rounded-circle', alt: user.username
       nd
    end
    

    【讨论】:

    • 对我也是如此。使用此代码,它始终显示 profil_default 图像
    • “它不起作用”是无用的信息。究竟是什么不起作用?您是否隔离了任何其他可能导致它失败的因素?该文件是否存在?
    • 我希望如果在用户的上传文件夹中没有 avatar.jpg 它是显示的另一张图片,但是当我按照上面所说的操作时,它会将我送回每次默认头像,而不是用户头像。
    • 我不明白为什么,因为它看起来很愚蠢。如果文件 /7/avatar.jpg 存在,则取它,否则取另一个。
    • 是的。但是您必须在这里记住,我并没有查看您的应用程序的整个代码,或者我拥有一个水晶球,它可以让我神奇地看到您可能错过的内容。如果你想去任何地方,你需要能够进行基本的调试并为此方法设置一个测试。
    猜你喜欢
    • 2017-08-16
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 2019-09-03
    相关资源
    最近更新 更多