Как у вас есть Gravatar по умолчанию, который является внешним, и который фактически изменяет размеры должным образом? - PullRequest
4 голосов
/ 04 мая 2011

Чтобы реализовать Gravatar в моем приложении Rails3, я использую гем gravatar_image_tag в качестве помощника, но у меня возникают проблемы при смешивании 2 опций конфигурации:

  1. Если у пользователя нет граватара, прикрепленного к его электронной почте, отображается по умолчанию изображение; но я хочу, чтобы он ссылался на внешний файл (например, http://www.iconfinder.com/ajax/download/png/?id=43350&s=128 вместо :identicon или другие)
  2. Я также хочу, чтобы изображение было изменено на лету, скажем, до 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

опция размера не применяется, и граватар отображается в полном размере (в нашем случае 128px).

Что я делаю не так или как мне добиться этой комбинации?

Ответы [ 2 ]

2 голосов
/ 04 мая 2011

Gravatar не изменит размер изображения по умолчанию для вас. Я предполагаю, что это всего лишь 302 секунды для ulr, заданных по умолчанию, если он не находит граватар для письма, которое вы ему дали. Похоже, параметр 's' в URL-адресе для иконки соответствует размеру, который вы пытаетесь получить, но этот значок не имеет размера 50 пикселей, доступно только 128, 256 и 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

Или, если вы найдете значок в значке искателя, размер которого вам нравится, измените настройку параметра по умолчанию следующим образом.

options[:default] = "http://www.iconfinder.com/ajax/download/png/?id=43350&s=#{options[:size]}"
0 голосов
/ 05 мая 2011

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

...