Gravatar - 设置自定义默认头像 - 未显示的头像

时间:2014-02-13 19:39:56

标签: ruby-on-rails gravatar

我在localhost:3000上的开发环境

我在Gravatar上关注了railscasts剧集。我正在尝试设置位于资产/图片中的自定义头像图片。

我使用的代码是:

  def avatar_url(user)
    gravatar_id = Digest::MD5.hexdigest(user.email.downcase)
    default_url = "#{root_url}assets/AwesomeAvatar.png"
    "http://gravatar.com/avatar/#{gravatar_id}.png?s=100&r=g&d=#{CGI.escape(default_url)}"
  end

头像does not load。当我尝试保存图像时出现错误:“失败 - 没有文件”。

我将default_url更改为:

    default_url = "http://localhost:3000/assets/AwesomeAvatar.png"

当我去这个网址时,我看到了头像的图像,但我仍然得到相同的错误,并且头像没有加载。我也尝试将d设置为:  d="http://localhost:3000/assets/AwesomeAvatar.png"d=#{CGI.escape("http://localhost:3000/assets/AwesomeAvatar.png")},但也无法加载头像。

有什么线索错了吗?

由于

3 个答案:

答案 0 :(得分:3)

Gravatar的网站说你指定的默认图像"必须是公开的(例如,不能在内联网上,在本地开发机器上,在HTTP Auth后面或其他防火墙等)。默认图像通过安全扫描以避免恶意内容。"

您用于默认映像的url托管在localhost上的开发环境中,因此将失败。要使其工作,您需要在某个公共位置托管默认图像,并使用该公共URL作为默认值。

答案 1 :(得分:0)

看起来您的网址有误,请尝试:

gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}"

作为参考,这是我的用户帮助:

module UsersHelper

  # Returns the Gravatar (http://gravatar.com/) for the given user.
  def gravatar_for(user, options = { size: 50 })
    gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
    size = options[:size]
    gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}"
    image_tag(gravatar_url, alt: user.name, class: "gravatar")
  end

end

您可以添加选项[:default] = image_tag(“Yourimage.png”)来更改默认图片。

答案 2 :(得分:0)

我应该评论你的问题,但我的声誉不允许我。 你试试“gravatar_url =”https://secure.gravatar.com/avatar/# {gravatar_id}“???