Хороший RoR Gravatar gem / плагин и определите, существует ли учетная запись gravatar - PullRequest
2 голосов
/ 09 июля 2011

В настоящее время я использую плагин mdeering gravatar_image_tag для получения граватационных изображений для пользователей, но моя дилемма - попытаться обнаружить в коде, есть ли у пользователя граватар:

Если он это сделает, отобразите граватарное изображение. Если нет, то отобразите локальный файл изображения по умолчанию на моем сервере.

Я открыт для использования других плагинов, если они предлагают эту функцию.

Пожалуйста, предоставьте примеры кода. Они помогают мне учиться лучше.

Спасибо!

Ответы [ 4 ]

7 голосов
/ 09 июля 2011

Вам не нужны гемы / плагины. Эта заставка объясняет, что вам нужно, шаг за шагом. Это сводится к использованию следующего вспомогательного метода:

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
3 голосов
/ 22 июня 2013

Вот вспомогательный метод, чтобы проверить, есть ли у пользователя уже изображение граватара:

Хитрость заключается в том, чтобы получить изображение граватара с ложным изображением по умолчанию, а затем проверить ответ заголовка.Это достигается с помощью библиотеки 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 голосов
/ 13 августа 2015

Похоже, я очень опаздываю на вечеринку, но у драгоценных камней gravatar_image_tag есть опции, которые вам нужны, чтобы выполнить это очень легко.

Вы можете настроить ваше изображение по умолчанию глобально Ваше приложение выглядит так:

# 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

Или на разовой основе примерно так:

gravatar_image_tag('junk', alt: 'Github Default Gravatar', gravatar: { default: 'https://assets.github.com/images/gravatars/gravatar-140.png' })
0 голосов
/ 09 июля 2011

Гравматический камень должен прийти вам на помощь. Это довольно просто - вы можете просмотреть его через README. Github Gem ссылка

...