ruby-on-rails-3 – 你如何拥有一个外部的默认Gravatar并实际调整大小?

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

>如果用户没有将电子邮件附加到其电子邮件中,则会呈现默认图像;但我希望它引用一个外部文件(例如,http://www.iconfinder.com/ajax/download/png/?id = 43350& s = 128而不是:identicon或其他)
>我也希望图像能够动态调整大小,比方说50px.

独立地,两个选项都按预期工作,但是当我将它们放在一起时:

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).

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

最佳答案 Gravatar不会为您调整默认图像的大小.我假设如果它找不到你给它的电子邮件的gravatar,那么只有302s的ulr给出了默认值.看起来像iconfinder url中的’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]}"
点赞