你如何拥有一个外部的默认Gravatar并实际调整大小?

时间:2011-05-04 15:15:22

标签: ruby-on-rails-3 gravatar

要在我的Rails3应用程序中实现 Gravatar ,我在帮助器中使用gravatar_image_tag gem,但在混合2个配置选项时遇到问题:

  1. 如果用户没有在其电子邮件中附加了一个gravatar,则会呈现默认图像;但我希望它引用外部文件(例如,http://www.iconfinder.com/ajax/download/png/?id=43350&s=128代替:identicon或其他人)
  2. 我还希望图像能够调整大小,比方说50px。
  3. 独立地,两个选项都按预期工作,但是当我把它们放在一起时:

    def gravatar_for(user, options = { :default => 'http://www.iconfinder.com/ajax/download/png/?id=43350&s=128', :size => 50 })
      gravatar_image_tag(user.email.downcase, :alt => user.full_name,
                                              :class => 'gravatar',
                                              :gravatar => options)
    end

    未应用size选项,并且gravatar以其完整大小呈现(在这种情况下为128px)。

    我做错了什么,或者我怎样才能实现这种组合?

2 个答案:

答案 0 :(得分:2)

Gravatar不会为您调整默认图片大小。我假设如果它找不到你给它的电子邮件的gravatar,那么只有302s的ulr给出了默认值。看起来像iconfinder网址中的's'参数是针对您想要抓取的尺寸,但该图标的大小不是50px,只有128,256和512

示例:

http://www.iconfinder.com/ajax/download/png/?id=43350&s=256

如果您想要50px和80px版本的图标,我会将其分别保存到您的应用程序public / image目录default_gravatar_50.png和default_gravatar_80.png,并更改您的方法。

def gravatar_for(user, options = {})
  options = { :size => 50 }.merge(options)
  options[:default] = image_tag("default_gravatar_#{options[:size]}.png
  gravatar_image_tag(user.email.downcase,
                     :alt => user.full_name,
                     :class => 'gravatar',
                     :gravatar => options)
end

或者,如果您在图标查找器上找到一个您喜欢的尺寸的图标,请更改默认选项的设置。

options[:default] = "http://www.iconfinder.com/ajax/download/png/?id=43350&s=#{options[:size]}"

答案 1 :(得分:0)

Iconfinder在这里。您不想链接到下载脚本。相反,只需抓取自己的图像的URL,这样你就不会得到很多标题信息。