2009-04-21 13 views
5

Ho esaminato quanto segue, ma non sono chiari, in particolare il riferimento a DataMapper e alle dipendenze gem.Come aggiungere gravatar/identicons a Ruby on Rails?

Tutto quello che voglio come risultato è essere in grado di prendere il mio valore @ user.email che è in un | do | loop e visualizza un gravatar dove l'identicon è impostato su "y" - in altre parole, quei carini disegni apparentemente casuali!

Ma quando guardo ciò che è disponibile, non è chiaro cosa fare - in particolare i riferimenti a DataMapper e alle dipendenze gem.

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

sto giocando in giro con questo, ma ho voluto ottenere un feedback da altri prima di immergersi troppo in profondità!

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

ho installato boschi plug gravatar:

http://github.com/woods/gravatar-plugin/tree/master che è lo stesso di quello di cui qui di seguito ... tuttavia, ottengo un errore quando si digita in:

<%= gravatar_for @user %> 

L'errore è:

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

Ciao, sono l'autore di Gravtastic. Ho aggiornato la libreria e reso il README un po 'più chiaro. Suonami se hai bisogno di aiuto per usarlo. –

risposta

1

C'è un plugin Gravatar Rails che può essere trovato qui:

http://gravatarplugin.rubyforge.org/

installare il plugin in questo modo:

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

Dopo aver installato il plugin, se il modello risponde a un 'e-mail 'metodo, questo tag mostrerà il Gravatar:

<%= gravatar_for @user %> 
+0

Ciao, l'ho installato e ottengo un errore: metodo indefinito 'gravatar_for 'per # Angela

+0

C'è qualcosa che dovrei fare per" abilitarlo "? Ho notato che crea un plugin chiamato gravatar-plugin ... Devo rinominarlo? Dovevo farlo per restful_authentication. – Angela

+2

Hai riavviato il tuo server? – Terry

1

È necessario MD5 hash l'indirizzo e-mail e quindi inserirlo in un URL gravatar. Questo ti darà l'URL dell'immagine. Di seguito è riportato un esempio di come farlo.

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

Se si desidera che i disegni casuali visualizzati, è possibile utilizzare un hash MD5 per ottenerli. È possibile eseguire l'hash del valore della chiave in un ciclo e ottenere un elenco in questo modo.

+0

Come aggiungo d = identicon quando uso il plugin gravatar? – Angela

+0

stessa domanda .. – SuperString

8

Non ripetere troppo, ma per dare una risposta più dettagliata:

Come ha detto Sam152, è necessario creare un hash MD5 dall'indirizzo e-mail dell'utente che viene quindi utilizzato in una richiesta GET al server gravatar.

Il modo più semplice per accedere agli hash MD5 è tramite Digest, parte del gem di ActionPack (all'interno di ActionView). Introdurre nelle 'config/environment.rb':

require 'digest' 

Ora è solo bisogno di utilizzare il seguente in cui si desidera visualizzare gravatar dell'utente:

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

Questo non richiede gemme aggiuntivi e si puoi creare un aiuto, se necessario, se tutto ciò che desideri è inserire il gravatar dell'utente.

13

Inserire questo codice in ApplicationHelper in modo che gravatar_for sia disponibile in tutte le viste.

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 

In vista:

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

ho affinato la soluzione di inclinazione. Dopo Gravatar guidelines, le e-mail devono essere ritagliate e in minuscolo prima dell'hashing. Inoltre, sembra che lo require 'digest' non sia necessario (testato su Rails 3).

+0

come faccio a impostare d diversi tipi di gravatars (ad es. mostri)? – Angela

+1

Aggiungi '& d = DEFAULT_ICON_NAME' all'URL. Modificherò il mio codice lunedì quando torno al lavoro. Per i nomi delle icone vedere http://gravatar.com/site/implement/images/ – Nowaker

+0

Killer! Grazie! – Techism

1

Io uso https://github.com/sinisterchipmunk/gravatar funziona bene, sto solo utilizzando le basi, ma può fare incassare e opzioni avanzate.

E 'anche semplice da usare:

Gravatar.new(email).image_url 

per i identicon si potrebbe aggiungere Wavatar come segue

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