【问题标题】:Gravatar image not displaying?Gravatar图像不显示?
【发布时间】:2019-03-17 09:23:34
【问题描述】:

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

helpers/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

users/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 网址,但它似乎仍然没有加载。也尝试重新启动服务器。不确定问题出在哪里?

【问题讨论】:

  • 您有任何错误吗?使用users_controller.rb 文件更新您的问题。
  • 已更新。是的,我的用户显示页面上现在确实出现了 gravatar 图像。
  • 您提供的电子邮件是否有gravatar.com 的帐户?如果是新帐户,可能需要几分钟才能显示出来。
  • hmm...您的代码是正确的,但我认为可能是 css 问题,然后尝试设置 img-display to none
  • 谢谢,这是一个 CSS 问题。原来我之前将图像显示设置为无,但一旦我删除它,它就起作用了。

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


【解决方案1】:

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

image {
 display: none;
}

如果不是这样,则从none 中删除image-display

【讨论】:

    【解决方案2】:

    gravatar_for(@user)

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

    【讨论】:

    • 使用实例变量会出错,因为它没有为助手本身定义。但是,我尝试在助手中定义实例,但仍然是同样的问题。 'user' 也是数据库中定义的变量,所以我不认为该变量是问题。
    【解决方案3】:

    您需要 gravatar 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 帐户,您将无法删除您的电子邮件地址。大多数用户都在抱怨这个问题。

    希望对你有帮助

    【讨论】:

      【解决方案4】:

      删除 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-12
        • 1970-01-01
        • 1970-01-01
        • 2017-05-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多