2

我目前正在使用 mdeering 的 gravatar_image_tag 插件为用户获取 gravatar 图像,但我的困境是尝试在代码中检测用户是否有 gravatar:

如果他这样做,则显示 gravatar 图像。如果没有,则在我的服务器上显示本地默认图像文件。

如果他们提供此功能,我愿意使用其他插件。

请提供代码示例。他们帮助我学得最好。

谢谢!

4

4 回答 4

7

您不需要宝石/插件。此截屏视频逐步解释了您需要什么。归结为使用以下辅助方法:

def avatar_url(user)
  default_url = "#{root_url}images/guest.png"
  gravatar_id = Digest::MD5.hexdigest(user.email.downcase)
  "http://gravatar.com/avatar/#{gravatar_id}.png?s=48&d=#{CGI.escape(default_url)}"
end
于 2011-07-09T04:13:14.673 回答
3

这是检查用户是否已经拥有 gravatar 图像的辅助方法:

诀窍是使用错误的默认图像获取 gravatar 图像,然后检查标题响应。它是通过 Net::HTTP ruby​​ 库实现的。

def gravatar?(user)
        gravatar_check = "http://gravatar.com/avatar/#{Digest::MD5.hexdigest(user.gravatar_email.downcase)}.png?d=404"
        uri = URI.parse(gravatar_check)
        http = Net::HTTP.new(uri.host, uri.port)
        request = Net::HTTP::Get.new(uri.request_uri)
        response = http.request(request)
        if (response.code.to_i == 404)
            return false
        else
            return true
        end 
    end
于 2013-06-22T11:48:45.927 回答
0

Gravtastic gem 应该来拯救你。它相当简单——你可以仔细阅读它的自述文件。Gem 的 github链接

于 2011-07-09T05:03:36.133 回答
0

看起来我参加聚会的时间很晚,但是 gravatar_image_tag gems 确实有您需要的选项来轻松完成此操作。

您可以在应用程序中全局配置默认图像,如下所示:

# config/initializers/gravatar_image_tag.rb
GravatarImageTag.configure do |config|   
  # Set this to use your own default gravatar image rather then serving up Gravatar's default image [ 'http://example.com/images/default_gravitar.jpg', :identicon, :monsterid, :wavatar, 404 ].
  config.default_image  = nil
end

或者像这样一次性使用:

gravatar_image_tag('junk', alt: 'Github Default Gravatar', gravatar: { default: 'https://assets.github.com/images/gravatars/gravatar-140.png' })
于 2015-08-13T04:48:11.840 回答