2014-02-13 71 views
1

我在開發環境在localhost:3000的Gravatar - 設置自定義默認的頭像 - 頭像未顯示

我也跟着上的Gravatar railscasts插曲。我正在嘗試設置位於資源/圖片中的自定義頭像圖片。

我使用的代碼是這樣的:

def avatar_url(user) 
    gravatar_id = Digest::MD5.hexdigest(user.email.downcase) 
    default_url = "#{root_url}assets/AwesomeAvatar.png" 
    "http://gravatar.com/avatar/#{gravatar_id}.png?s=100&r=g&d=#{CGI.escape(default_url)}" 
    end 

的化身does not load。當我嘗試保存圖像時出現錯誤:「失敗 - 無文件」。

我改變DEFAULT_URL到:

default_url = "http://localhost:3000/assets/AwesomeAvatar.png" 

當我去這個網址我看到化身的形象,但我仍然得到同樣的錯誤和頭像不加載。我也嘗試將d設置爲: d="http://localhost:3000/assets/AwesomeAvatar.png"d=#{CGI.escape("http://localhost:3000/assets/AwesomeAvatar.png")}但是沒有運氣可以使頭像加載。

任何線索怎麼了?

感謝

回答

4

的Gravatar的網站說,你指定默認的圖像」必須是可公開獲得的(例如不能在企業內部網,本地開發機器上,後面的HTTP認證或其他防火牆等)。 「

您用於默認圖像的URL被託管在localhost上的開發環境中,因此將失敗。要使其工作正常,您需要託管默認圖片在某處公開,並使用該公共URL作爲默認值。

+0

這是解決方案,謝謝! - 我在我的網站的公共目錄上上傳了頭像,並且一切正常。 –

0

它看起來像你的URL是錯誤的,請嘗試:

gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}" 

供參考,這是我的用戶助手:

module UsersHelper 

    # Returns the Gravatar (http://gravatar.com/) for the given user. 
    def gravatar_for(user, options = { size: 50 }) 
    gravatar_id = Digest::MD5::hexdigest(user.email.downcase) 
    size = options[:size] 
    gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}" 
    image_tag(gravatar_url, alt: user.name, class: "gravatar") 
    end 

end 

您可以添加選項[:默認= image_tag(「Yourimage.png」)更改默認圖片。

+0

所有其他gravatars顯示正常。是我有問題的默認圖片(我嘗試加載自定義圖片,而不是gravatars默認圖片)。 –

+0

我知道沒有default_url選項,你可能正在尋找options [:default] =「#{root_url} assets/AwesomeAvatar.png」,查看這個答案以及:http://stackoverflow.com/questions/5885714/你怎麼做 - 默認gravatar - 這是外部和實際調整 - pr?rq = 1 – ChrisBarthol