2011-05-04 14 views
4

要實現的Gravatar在我的Rails3中的應用程序,我使用的幫手gravatar_image_tag寶石,但混合2的配置選項,當我有問題:你如何擁有一個外部的默認Gravatar,並且實際調整大小?

  1. 如果用戶不具有的gravatar附加到他的電子郵件默認圖像呈現;但我希望它引用外部文件(例如的,而不是http://www.iconfinder.com/ajax/download/png/?id=43350&s=128:identicon等)
  2. 我也希望圖像是在飛行調整到,比方說50像素。

獨立地,上述兩種情況不如預期,但是當我把它們放在一起:

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

不施加大小選項,和的gravatar獲取它的全尺寸(128像素在這種情況下)呈現。

我在做什麼錯,或者我該如何實現這種組合?

回答

2

Gravatar不會爲您調整默認圖像大小。如果它沒有找到你送給它的電子郵件的gravatar,我認爲它只是作爲默認的302s給出了默認值。它看起來像「S」在iconfinder URL參數是你試圖抓住大小,但該圖標沒有可用的只有128個,256大小50像素,而512

例子:

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

如果你想要一個50像素和80像素的圖標版本,我將它們分別保存到你的應用程序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 

或者,如果你發現圖標取景器的圖標,其大小(S)你想改變,像這樣的默認選項的設置。

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

記下我改變設置默認選項的方式。以前的方法,如果您只將大小選項傳遞給您對gravatar_的調用,您將失去:default選項。 – 2011-05-04 18:46:14

+0

我其實遇到_that_問題,所以你的留言比歡迎! :) – 2011-05-04 18:50:42

+0

不想一次將你重載到很多位置,但是如果你在github上籤出readme,也有辦法配置gem使全局設置這些默認值。但截至目前,這些全球性違約並不需要lambda或proc,但這是他們這樣做的好時機。 – 2011-05-04 19:17:14

0

Iconfinder here。您不想鏈接到下載腳本。相反,只需抓住自己的形象的網址,所以你不會得到很多標題信息。

+0

嗨馬丁,感謝您的提示!只是爲了確定,你的意思是代替'http://www.iconfinder.com/ajax/download/png/?id = 43350&s = 128',最好使用'http://cdn1.iconfinder.com/數據/圖標/龍/ 128/User.png'? – 2011-05-05 16:16:17

相關問題