Ouverture de session

Commentaires récents

Syndication
Flux XML

Systeme de rating plus "RoR" ?

Systeme de rating plus "RoR" ?
Posté par Kael le Samedi, 26 Juillet, 2008 - 6:38pm. Débuter avec Rails

Bonjour,

J'ai créé un helper pour générer l'affichage des étoiles d'un rating mais je ne le trouve pas élégant.
Ca donne :
Dans le module ApplicationHelper :

def rating( note)
@rating = ''
bad = 5 - note
note.times do
@rating += image_tag( 'rating-good.jpg', :size => "30x31")
end
bad.times do
@rating += image_tag( 'rating-bad.jpg', :size => "30x31")
end

@rating
end

Et dans la vue :

rating @note

Pouvez vous me conseiller une façon plus "jolie" de faire la même chose ?

Merci !



[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | sujet précédent | sujet suivant | envoyer par email ]

Options d'affichage des commentaires
Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder" pour activer vos changements.

Sujet: 
Pour de la concaténation de
Auteur: 
AlSquire
Date: 
Mar, 29/07/2008 - 21:46

Pour de la concaténation de chaine je trouve la manipulation d'Arrays plus confortable en général, vive le .join !

Exemples :

def rating(note)
  Array.new(5) do |i|
    image_tag((i < note ? 'rating-good.jpg' : 'rating-bad.jpg'), :size => "30x31")
  end.join
end

ou bieng :

def rating(note)
  rating = Array.new(note, 'rating-good.jpg') + Array.new(5 - note, 'rating-bad.jpg')
  rating.map { |r| image_tag(r, :size => "30x31") }.join
end

une variante :

def rating(note)
  rating = ['rating-good.jpg'] * note + ['rating-bad.jpg'] * (5 - note)
  rating.map { |r| image_tag(r, :size => "30x31") }.join
end

etc...


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Autre solution
Auteur: 
sebalyans
Date: 
Mar, 29/07/2008 - 09:59

Pour faire encore plus simple, utiliser 6 images représentant les 6 notes.

Par exemple rate_0.png, rate_1.png, ..., rate_5.png.

Ensuite, dans la vue, un truc du genre

image_tag "rate_#{note}.png"

et l'affaire est réglée...

http://www.alyans.fr


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Salut,
Auteur: 
hoksitan
Date: 
Sam, 26/07/2008 - 19:51

Salut,

Pourquoi une variable d'instance dans un helper ? C'est inutile et ça prend plus de mémoire qu'une variable locale.


def rating_helper(note)
html = ''
note.times do
html += image_tag( 'rating-good.jpg', :size => "30x31")
end
(5 - note).times do
html += image_tag( 'rating-bad.jpg', :size => "30x31")
end
html
end

Voilà à froid. :-)

--------------------------------
Physalis-Création
http://www.physalis-creation.com


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Bizarrement
Auteur: 
Kael
Date: 
Sam, 26/07/2008 - 20:03

Merci hoksitan !
Bizarrement lorsque j'avais essayé, RoR me générait une erreur (manque une variable à l'appel de la fonction).

Suis je obligé d'initialiser ma variable rating ou html ?


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Si tu fais : html +=
Auteur: 
hoksitan
Date: 
Lun, 28/07/2008 - 09:52

Si tu fais :

html += "toto"

tu es obligé de l'initialiser car il cherche un contenu à "html" à cause du +.

Si tu fais :

html = "toto"

ce n'est plus la peine.

--------------------------------
Physalis-Création
http://www.physalis-creation.com


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Nouveaux liens

Qui est en ligne
Il y a actuellement 1 utilisateur et 46 invités en ligne.

Membres en ligne :

  • msap

railsfrance.org - communauté francophone des utilisateurs de Ruby on Rails
[ Propulsé par Drupal ]