Как добавить граватар / идентификаторы в Ruby on Rails? - PullRequest
5 голосов
/ 21 апреля 2009

Я посмотрел на следующее, но они не ясны, в частности, ссылки на DataMapper и зависимости gem.

Все, что я хочу получить в результате, - это иметь возможность принимать значение @ user.email, которое находится в | do | Зациклите и отобразите граватар, где для идентификатора установлено значение "у" - другими словами, эти милые, казалось бы, случайные рисунки!

Но когда я смотрю на то, что доступно, неясно, что делать - особенно ссылки на DataMapper и зависимости gem.

http://github.com/chrislloyd/gravtastic/tree/master

Я играю с этим, но я хотел получить отзывы от других, прежде чем погрузиться слишком глубоко!

http://www.thechrisoshow.com/2008/10/27/adding-gravatars-to-your-rails-apps

Я установил плагин Gravatar от Woods:

http://github.com/woods/gravatar-plugin/tree/master, что совпадает с указанным ниже ... однако я получаю сообщение об ошибке:

<%= gravatar_for @user %>

Ошибка:

undefined method `gravatar_for' for #<ActionView::Base:0x474ddf4>

Ответы [ 5 ]

13 голосов
/ 18 февраля 2011

Поместите этот код в ApplicationHelper, чтобы gravatar_for был доступен во всех представлениях.

def gravatar_for email, options = {}
    options = {:alt => 'avatar', :class => 'avatar', :size => 80}.merge! options
    id = Digest::MD5::hexdigest email.strip.downcase
    url = 'http://www.gravatar.com/avatar/' + id + '.jpg?s=' + options[:size].to_s
    options.delete :size
    image_tag url, options
end

В просмотрах:

<%= gravatar_for 'my@mail' %>
<%= gravatar_for 'my@mail', :size => 48 %>
<%= gravatar_for 'my@mail', :size => 32, :class => 'img-class', :alt => 'me' %>

Я уточнил решение уклона. Следуя правилам Gravatar , электронные письма должны быть обрезаны и уменьшены перед хэшированием. Кроме того, похоже, что require 'digest' не требуется (протестировано на Rails 3).

8 голосов
/ 09 октября 2009

Не повторять слишком много, а вместо этого дать более подробный ответ:

Как сказал Sam152, вы должны создать хеш MD5 из адреса электронной почты пользователя, который затем используется в GET-запросе к серверу gravatar.

Самый простой способ получить доступ к хешам MD5 - это Digest, часть гема ActionPack (внутри ActionView). Поместите в файл config / environment.rb следующее:

require 'digest'

Теперь вам нужно использовать только следующее, где вы хотите отобразить граватар пользователя:

image_tag("http://www.gravatar.com/avatar.php?gravatar_id=#{Digest::MD5::hexdigest(@user.email)}", :alt => 'Avatar', :class => 'avatar')

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

1 голос
/ 10 января 2012

Я использую https://github.com/sinisterchipmunk/gravatar он работает хорошо, я использую только основы, но он может делать обналичивание и расширенные опции.

Он также прост в использовании:

Gravatar.new(email).image_url

для идентификаторов вы можете добавить wavatar следующим образом

Gravatar.new(email).image_url + '?d=wavatar'
1 голос
/ 21 апреля 2009

Существует плагин Gravatar Rails, который можно найти здесь:

http://gravatarplugin.rubyforge.org/

Установите плагин так:

  ruby script/plugin install svn://rubyforge.org//var/svn/gravatarplugin/plugins/gravatar

После установки плагина, если ваша модель реагирует на метод 'email', этот тег покажет Gravatar:

  <%= gravatar_for @user %>
1 голос
/ 21 апреля 2009

Вам необходимо MD5-хэш адрес электронной почты, а затем поместить его в URL-адрес Gravatar. Это даст вам URL изображения. Ниже приведен пример того, как это сделать.

http://www.gravatar.com/avatar/  md5(email)  ?s=128&d=identicon&r=PG

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...