没有显示Gravatar图像

时间:2016-07-06 11:32:35

标签: ruby-on-rails railstutorial.org cloud9-ide

我正在使用Michael Hartl的Ruby on Rails教程,并且我添加了代码来显示用户的Gravatar图像。但它没有显示出来。

这是我的用户帮助

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

这是我的show.html.erb



<% provide(:title, @user.name) %>
<div class="row">
  <aside class="col-md-4">
    <section class="user_info">
      <h1>
        <%= gravatar_for @user %>
        <%= @user.name %>
      </h1>
    </section>
  </aside>
</div>
&#13;
&#13;
&#13;

这是我检查元素时的代码

    <img alt="humber" class="gravatar" src="https://secure.gravatar.com/avatar/8e92292186fbb306e253b08d0f3eb993">
    humber

this is the image

8 个答案:

答案 0 :(得分:8)

可能你在教程中做了一个练习并写了自定义类来隐藏图像

img {
  display: none;
}

答案 1 :(得分:1)

嗯....我尝试添加一个图片标记并添加哈希值以查看它是否呈现(请删除它并在使用后使用gravatar_for)。它确实如此,所以这里是我改进gravatar_for方法的步骤。我希望它有所帮助。

  1. 通过https://
  2. 将重力元的来源更改为http://
  3. 在gravatar_for方法中向gravatar添加更多类。它应该读 image_tag(gravatar_url,alt:user.name,class:&#34; gravatar img img-responsive&#34;)

答案 2 :(得分:1)

我已经解决了!

本教程指导您使用curl下载图像;但这可能会导致文件损坏。为什么?写这本书时,网站上的文件是'.png',今天它是'.svg'。该名称也已从rails.png更改为rails-logo.svg。

按照指南,您下载一个空白文件并将其另存为.png,然后rails会给您中指。

答案 3 :(得分:0)

电子邮件是否正确提取?我有一个类似的方法,使用默认URL作为参数(如果用户电子邮件未在gravatar中注册。请检查它是否可以帮助您:

= link_to 'New Issue',
          { :controller => "issues", action: 'new'},
          class: 'btn btnsuccess right'

Ps:这是用户模型中的实例方法

答案 4 :(得分:0)

您的代码是正确的,也许您使用的用户没有电子邮件,或者电子邮件中没有图片。我建议您验证用户是否有电子邮件

def gravatar_for(user)
    if user.email?
        gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
        gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}"
        image_tag(gravatar_url, alt: user.name, class: "gravatar")
    else
        image_tag("/img/avatar_default.png", alt: user.name, class: "gravatar")
    end
end

答案 5 :(得分:0)

我遇到了同样的问题,并且尝试了迄今为止给出的所有解决方案(好吧,前三个)但是却一直在挠头。然后我删除了&#39; secure&#39;来自URL,如果工作得很好 - 或者至少对于与gravatar无关的链接。我的意思是,我期待显示默认的gravatar图像,它确实显示了!

(我也关注Michael Hartl的课程。)

<% hex_digest = Digest::MD5::hexdigest('my_name@gmail.com') %>
<% gravatar_url = "https://gravatar.com/avatar/#{hex_digest}" %>
<%= image_tag(gravatar_url, alt: 'gravatar image') %>

答案 6 :(得分:0)

As of 2018 Michael的辅助函数gravatar_for的URL变量定义为:

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

但是Gravatar's documentation指导您使用:

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

前者对我不起作用,我得到(404)并且图像似乎已损坏。后者对我来说很好。

答案 7 :(得分:0)

在您的custom.scss文件中注释掉或删除以下行:

img {
    display: none;
}