我目前正在使用mdeering的gravatar_image_tag插件来获取用户的重力图像,但我的困境是尝试在代码中检测用户是否有重力数字:
如果他确实显示了重力图像。 如果没有,则在我的服务器上显示本地默认图像文件。
如果他们提供此功能,我愿意使用其他插件。
请提供代码示例。他们帮助我学到最好的东西。
谢谢!
答案 0 :(得分:7)
您不需要宝石/插件。这个screencast逐步解释了您的需求。它归结为使用以下辅助方法:
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
答案 1 :(得分:3)
这是一个帮助方法来检查用户是否已经有一个重力图像:
诀窍是使用假默认图像获取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
答案 2 :(得分:0)
Gravtastic宝石应该来救你。它非常简单 - 您可以通过自述文件阅读。宝石的github link
答案 3 :(得分:0)
看起来我参加派对的时间非常晚,但gravatar_image_tag gems确实有你需要的选项来轻松实现这一目标。
您可以在应用程序中configure your default image globally这样:
# 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
或者像one off basis这样:
gravatar_image_tag('junk', alt: 'Github Default Gravatar', gravatar: { default: 'https://assets.github.com/images/gravatars/gravatar-140.png' })