Gravatar图片不显示?

时间:2017-01-16 20:07:58

标签: ruby-on-rails ruby-on-rails-5

我正在研究Michael Hartl的rails教程,目前我正在尝试将一个gravatar图像添加到用户个人资料中。但是,gravatar默认图像不会加载到我的用户显示页面上。

助手/ users_helper.rb

module UsersHelper

  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) %>
<h1>
    <%= gravatar_for @user %>
    <%= @user.name %>

</h1>

users_controller.rb

class UsersController < ApplicationController
  def new
  end

  def show
    @user = User.find(params[:id])
  end
end

我仔细检查了gravatar url,但它似乎仍然没有加载。尝试重启服务器也。不确定问题是什么?

4 个答案:

答案 0 :(得分:3)

您的代码是正确的但可能在教程中的一个练习中您编写了一些自定义类来隐藏图像。将image课程设为none

image {
 display: none;
}

如果不是这种情况,请从image-display删除none

答案 1 :(得分:0)

gravatar_for(@user)

怎么样?

看起来像需要传递变量的方法。

答案 2 :(得分:0)

您需要使用权益ID来显示您的照片。如果您不想在gravatar上开设新帐户,可以使用以下users_helper.rb中的代码:

module UsersHelper

  # Returns the Gravatar for the given user.
  def gravatar_for(user, options = { size: 180 })
    gravatar_id = 1
    size = options[:size]
    gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}?s=#{size}"
    image_tag(gravatar_url, alt: user.name, class: "gravatar")
  end
end

注意如果您打开gravatar帐户,则无法删除您的电子邮件地址。大多数用户都在抱怨这个问题。

我希望它有所帮助

答案 3 :(得分:0)

删除AvatarHelper模块中gravatar_url字符串开头的https:

module UsersHelper

  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