2011-07-09 7 views
2

私は現在ユーザーのgravatar_image_tagプラグインを使用していますが、私のジレンマはユーザーがgravatarを持っているとコード内で検出しようとします:良いRoR Gravatar gem/pluginsとgravatarアカウントが存在するかどうかを検出します

もし彼がグラバター画像を表示していれば、 そうでない場合は、サーバーにローカルのデフォルトイメージファイルを表示します。

この機能が提供されている場合は、他のプラグインを使用することができます。

コード例を示してください。彼らは私が最高のことを学ぶのを助けます。

ありがとうございます!

答えて

7

宝石/プラグインは必要ありません。このscreencastは、ステップバイステップで必要なものを説明しています。次のヘルパーメソッドを使用するようになります。

def avatar_url(user) 
    default_url = "#{root_url}images/guest.png" 
    gravatar_id = Digest::MD5.hexdigest(user.email.downcase) 
    "http://gravatar.com/avatar/#{gravatar_id}.png?s=48&d=#{CGI.escape(default_url)}" 
end 
0

Gravtastic gemがあなたの救助に来なければなりません。それはかなり簡単です - あなたはREADMEを通して精通しているかもしれません。ここでは宝石のgithubのlink

3

は、ユーザーが既にグラバター画像を持っているかどうかを確認するためのヘルパーメソッドです:

トリック偽のデフォルトの画像とグラバター画像を取得し、ヘッダの応答をチェックすることです。 これはNet :: HTTP ruby​​ライブラリで実現しました。

def gravatar?(user) 
     gravatar_check = "http://gravatar.com/avatar/#{Digest::MD5.hexdigest(user.gravatar_email.downcase)}.png?d=404" 
     uri = URI.parse(gravatar_check) 
     http = Net::HTTP.new(uri.host, uri.port) 
     request = Net::HTTP::Get.new(uri.request_uri) 
     response = http.request(request) 
     if (response.code.to_i == 404) 
      return false 
     else 
      return true 
     end 
    end 
0

私は非常に遅れて相手にしていますがgravatar_image_tag宝石はあなたが非常に簡単にこれを達成するために必要なオプションを持っているように見えます。

あなたがそうのようなアプリケーションでconfigure your default image globallyことができます:

# config/initializers/gravatar_image_tag.rb 
GravatarImageTag.configure do |config| 
    # Set this to use your own default gravatar image rather then serving up Gravatar's default image [ 'http://example.com/images/default_gravitar.jpg', :identicon, :monsterid, :wavatar, 404 ]. 
    config.default_image = nil 
end 

かそこらのようなone off basis上:

gravatar_image_tag('junk', alt: 'Github Default Gravatar', gravatar: { default: 'https://assets.github.com/images/gravatars/gravatar-140.png' }) 
関連する問題