Afin aussi une collection DESC
<%= render :partial => 'event', :collection => @events.sort_by(&:event_at)%>
Ce code affiche une collection ordonnée comme NCP, mais je veux commander cette collection comme DESC.
Comment puis-je y parvenir?
Vous devez vous connecter pour publier un commentaire.
Encore mieux, vous pouvez définir un champ d'application pour trier votre événement et à utiliser dans votre render.
Dans votre modèle d'Événement:
Si vous utilisez Rails3, à votre avis, vous pouvez tout simplement faire:
named_scope :desc, :order => ("events.event_at DESC")
et<%= render :partial => 'event', :collection => @events.desc %>
Event.paginate :page => params[:page], :order => 'created_at DESC'
<%= render :partial => 'event', :collection => Event.all.desc %>
. Que ce soit, si vous utilisez will_paginate, faire comme nathanvda dit (Selon la version de will_paginate que vous utilisez, je pense que vous pouvez faire@events = Event.desc.paginate :page => params[:page]
avec le desc named_scope).Comme décrit sur http://guides.rubyonrails.org/active_record_querying.html
Dans Rails 3, la syntaxe correcte est:
Vous pouvez juste inverser le tri de la collecte:
mais comme Yannis dit, vous êtes mieux de tri que vous chercher les choses à partir de la base de données idéale.
En fonction du type d'objet que vous avez, vous avez différentes façons de faire de la fonction de tri.
Si votre objet est un ActiveRecord, vous pouvez le faire de la manière suivante:
Cela va ajouter une
ORDER
clause à votre requête SQL, le tri des entrées avant de les récupérer à partir de la base de données.La deuxième solution est plus lent, comme vous allez le tri de vos entrées en ruby.
Mais si vous êtes à la manipulation d'un tableau d'objets, c'est votre seule solution.
Ce sera une boucle sur tous les événements, de la vérification de chacun d'eux pour le plus grand avec le
<=>
méthode.Vous pouvez également voir le tri de la documentation sur Enumerables.
@events.order('event_at DESC')
Je voulais afficher un tableau de classement et order by points desc. Après avoir essayé plusieurs infructueuse méthodes c'est ce qui a fonctionné pour moi dans ce cas. J'ai ajouté cette ligne à mon contrôleurs de la méthode de l'indice.
Vous pouvez le faire en utilisant
desc
méthode avec un paramètre.Voir exemple ci-dessous
Cela vous donnera @événements dans l'ordre décroissant de
event_at
champ.Grâce.