如何在Ruby on Rails中添加gravatar / identicons?

时间:2009-04-21 02:56:22

标签: ruby-on-rails

我已经看过以下内容,但它们并不清楚,尤其是对DataMapper和gem依赖项的引用。

我想要的结果就是能够获取| do |中的@ user.email值循环并显示一个gravatar,其中identicon设置为“y” - 换句话说,那些可爱的看似随意的图纸!

但是当我查看可用内容时,不清楚该怎么做 - 尤其是对DataMapper和gem依赖项的引用。

http://github.com/chrislloyd/gravtastic/tree/master

我正在玩这个,但我想在潜水之前得到别人的反馈!

http://www.thechrisoshow.com/2008/10/27/adding-gravatars-to-your-rails-apps

我安装了wood gravatar插件:

http://github.com/woods/gravatar-plugin/tree/master与下面提到的相同...但是,当我输入时出现错误:

<%= gravatar_for @user %>

错误是:

undefined method `gravatar_for' for #<ActionView::Base:0x474ddf4>

5 个答案:

答案 0 :(得分:13)

将此代码放在ApplicationHelper中,以便gravatar_for在所有视图中都可用。

def gravatar_for email, options = {}
    options = {:alt => 'avatar', :class => 'avatar', :size => 80}.merge! options
    id = Digest::MD5::hexdigest email.strip.downcase
    url = 'http://www.gravatar.com/avatar/' + id + '.jpg?s=' + options[:size].to_s
    options.delete :size
    image_tag url, options
end

观点:

<%= gravatar_for 'my@mail' %>
<%= gravatar_for 'my@mail', :size => 48 %>
<%= gravatar_for 'my@mail', :size => 32, :class => 'img-class', :alt => 'me' %>

我提炼了倾斜的解决方案。在Gravatar guidelines之后,应该在散列之前修剪和降低电子邮件。此外,似乎不需要require 'digest'(在Rails 3上测试)。

答案 1 :(得分:8)

不要重复太多,而是要提供更详细的答案:

正如Sam152所说,你必须从用户的电子邮件地址创建一个MD5哈希值,然后用于对gravatar服务器的GET请求。

访问MD5哈希的最简单方法是通过Digest,它是ActionPack(ActionView内部)gem的一部分。将以下内容放在'config / environment.rb'中:

require 'digest'

现在,您只需要使用以下内容显示用户的gravatar:

image_tag("http://www.gravatar.com/avatar.php?gravatar_id=#{Digest::MD5::hexdigest(@user.email)}", :alt => 'Avatar', :class => 'avatar')

这不需要额外的宝石,如果您需要的只是拉入用户的gravatar,您可以根据需要创建帮助。

答案 2 :(得分:1)

您需要MD5 hash该电子邮件地址,然后将其放入一个gravatar网址。这将为您提供图片网址。以下是如何操作的示例。

http://www.gravatar.com/avatar/  md5(email)  ?s=128&d=identicon&r=PG

如果您想要显示那些随机图纸,可以使用MD5哈希来获取它们。您可以在循环中散列键值并以此方式获取列表。

答案 3 :(得分:1)

有一个Gravatar Rails插件可以在这里找到:

http://gravatarplugin.rubyforge.org/

像这样安装插件:

  ruby script/plugin install svn://rubyforge.org//var/svn/gravatarplugin/plugins/gravatar

安装插件后,如果您的模型响应“电子邮件”方法,此标记将显示Gravatar:

  <%= gravatar_for @user %>

答案 4 :(得分:1)

我使用https://github.com/sinisterchipmunk/gravatar 它运作良好,我只使用基础知识,但它可以做兑现和高级选项。

使用起来也很简单:

Gravatar.new(email).image_url

对于你可以添加wavatar的识别符如下

Gravatar.new(email).image_url + '?d=wavatar'