要在我的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]}"