2009-04-21 7 views
5

He observado lo siguiente, pero no están claros, particularmente la referencia a las dependencias DataMapper y gema.¿Cómo agrego gravatar/identicons en Ruby on Rails?

Todo lo que quiero como resultado es poder tomar mi @ user.email valor que está en a | do | ¡Haz un bucle y visualiza un gravatar donde el identicon está configurado en "y" - en otras palabras, esos lindos dibujos aparentemente aleatorios!

Pero cuando miro lo que está disponible, no está claro qué hacer, particularmente las referencias a las dependencias de DataMapper y gem.

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

estoy jugando un poco con esto, pero quería obtener retroalimentación de los demás antes de sumergirse demasiado profundo!

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

He instalado el plugin maderas gravatar:

http://github.com/woods/gravatar-plugin/tree/master que es el mismo que el que se menciona a continuación ... Sin embargo, me da un error cuando escribo en:

<%= gravatar_for @user %> 

El error es:

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

Hola, soy el autor de Gravtastic. Actualicé la biblioteca e hice que el archivo README fuera un poco más claro. Hazme ping si necesitas ayuda para usarlo. –

Respuesta

1

Hay un plugin de rieles Gravatar que se pueden encontrar aquí:

http://gravatarplugin.rubyforge.org/

instalar el complemento de la siguiente manera:

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

Después de instalar el plugin, si el modelo responde a un 'correo electrónico 'método, esta etiqueta mostrará el Gravatar:

<%= gravatar_for @user %> 
+0

Hola, lo instalé y me sale un error: método indefinido 'gravatar_for 'para # Angela

+0

¿Hay algo que deba hacer para" habilitarlo "? Noté que crea un complemento llamado gravatar-plugin ... ¿Necesito cambiarle el nombre? Tuve que hacer eso para restful_authentication. – Angela

+2

¿Reinició su servidor? – Terry

1

Necesita MD5 hash la dirección de correo electrónico y luego ponerlo en una URL de Gravatar. Eso te dará la URL de la imagen. A continuación hay un ejemplo de cómo hacerlo.

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

Si quiere esos dibujos al azar que aparecen, puede usar un hash MD5 para obtenerlos. Podría hash el valor clave en un bucle y obtener una lista de esa manera.

+0

¿Cómo agrego d = identicon cuando uso el plugin gravatar? – Angela

+0

misma pregunta ... – SuperString

8

No repetir demasiado, sino dar una respuesta más detallada:

Como dijo Sam152, debe crear un hash MD5 a partir de la dirección de correo electrónico del usuario que luego se utiliza en una solicitud GET al servidor gravatar.

La forma más fácil de obtener acceso a hashes MD5 es a través de Digest, que forma parte de la gema ActionPack (dentro de ActionView). Introducir en 'config/environment.rb':

require 'digest' 

Ahora sólo tiene que utilizar el siguiente en la que desea mostrar gravatar del usuario:

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

Esto no requiere gemas adicionales y se puede crear un ayudante según sea necesario si todo lo que necesita es extraer el gravatar del usuario.

13

Ponga este código en su ApplicationHelper para que gravatar_for esté disponible en todas las vistas.

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 

En vistas:

<%= gravatar_for '[email protected]' %> 
<%= gravatar_for '[email protected]', :size => 48 %> 
<%= gravatar_for '[email protected]', :size => 32, :class => 'img-class', :alt => 'me' %> 

refiné solución de inclinación. Después de Gravatar guidelines, los correos electrónicos se deben recortar y minúsculas antes del hash. Además, parece que require 'digest' no es necesario (probado en Rails 3).

+0

¿Cómo configuro d ifferent tipos de gravatars (por ejemplo, monstruos)? – Angela

+1

Agrega '& d = DEFAULT_ICON_NAME' a la URL. Voy a modificar mi código el lunes cuando vuelva al trabajo. Para ver los nombres de los iconos, consulte http://gravatar.com/site/implement/images/ – Nowaker

+0

¡Asesino! ¡Gracias! – Techism

1

Yo uso https://github.com/sinisterchipmunk/gravatar funciona bien, solo estoy usando lo básico pero puede hacer cambios y opciones avanzadas.

También es fácil de usar:

Gravatar.new(email).image_url 

para los identicons se podría añadir wavatar de la siguiente manera

Gravatar.new(email).image_url + '?d=wavatar'