首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >好的RoR Gravatar gem/plugin,检测gravatar账号是否存在

好的RoR Gravatar gem/plugin,检测gravatar账号是否存在
EN

Stack Overflow用户
提问于 2011-07-09 11:32:50
回答 4查看 1.2K关注 0票数 2

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

如果他这样做了,那么就显示gravatar图像。如果不是,则在我的服务器上显示一个本地默认图像文件。

我对使用其他插件持开放态度,如果他们提供这个功能。

请提供代码示例。他们帮助我学习最好的东西。

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-09 12:13:15

你不需要gem/plugins。此screencast将逐步解释您所需的内容。归根结底,它需要使用以下辅助方法:

代码语言:javascript
复制
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
票数 7
EN

Stack Overflow用户

发布于 2013-06-22 19:48:46

下面是一个辅助方法,用来检查用户是否已经有了一个gravatar图像:

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

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2011-07-09 13:03:36

Gravtastic gem应该会来拯救你。它相当简单--你可以通读它的自述文件。宝石的github link

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6632543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档