Bonjour bonjour!
Voici mon problème :
J'ai une liste d'éléments (ça, ça fonctionne! youhou!)
Lorsque je supprime un élément (en AJAX), je souhaite utiliser Script.aculo.us et faire un petit BlindUp sur l'élément supprimé.
Ça aussi ça marche, mais j'ai un peu magouillé : Je stock l'item supprimé dans un flash, et je l'ajoute aux items récupérés via un find. En simplifié, ça donne ça :
items = Item.find(:all)
if flash[:deleted_item]
items << flash[:deleted_item]
end
Il me suffit ensuite de repérer l'item supprimé, de lui faire un <li> personnalisé (genre <li id="deleted">) et d'appliquer mon effet. Bon, si une solution plus propre existe, je suis ouvert à toutes critiques.
Reste que ma liste est triée (ben oui, ce serait trop facile sinon). Si je n'avais pas cet item supplémentaire, je ferai un :order => "" dans mon find() et le tour serait joué. Mais je ne peux pas le faire.
Voici donc ma question : Comment faire un tri sur plusieurs éléments?
Cas concret :
Chaque item a une priorité et un statut.
Je souhaite avoir le tri selon la priorité, puis le status en desc, puis l'id.
J'ai fait pas mal de recherche sur les méthodes sort et sort_by, mais je suis bloqué.
Je sais trier sur deux éléments, mais sans pouvoir préciser l'ordre croissant et décroissant (list.sort_by {|item| [item[:prio], item[:statut]]}) et je sais trier sur un élément dans l'ordre décroissant (list.sort {|a, b| b.statut <=> a.statut}), mais je ne sais pas comment combiner les deux...
Une idée encore plus magouilleuse m'est venue en rédigeant ce post : Je pourrais stocker ma liste telle qu'elle était avant suppression, comme ça pas besoin de faire joujou avec sort...
Any ideas?
Merci pour votre aide
Florent
|
il y a 1 jour 19 heures
il y a 6 jours 4 heures
il y a 1 semaine 4 jours
il y a 1 semaine 4 jours
il y a 1 semaine 4 jours
il y a 2 semaines 3 jours
il y a 2 semaines 4 jours
il y a 2 semaines 5 jours
il y a 2 semaines 6 jours
il y a 3 semaines 1 jour