Ich habe ein kleines Beispiel Rails App namens Tickets, die fiktiven Tickets an verschiedene Kunden verkauft und verkauft. In tickets_controller.rb, innerhalb def index
, ich habe diese Standard-Linie, die von Gerüsten erzeugt:Wie sortieren Sie normalerweise Elemente in Rails?
@tickets = Ticket.find(:all)
Um die Karten zu sortieren nach Namen, habe ich zwei mögliche Ansätze gefunden. Sie können es auf diese Weise tun:
@tickets = Ticket.find(:all, :order => 'name')
... oder so:
@tickets = Ticket.find(:all).sort!{|t1,t2|t1.name <=> t2.name}
(Tipp: Ruby-Dokumentation erklärt, dass sort!
das Array ändern wird, dass es das Sortieren, im Gegensatz zu sort
allein , die das sortierte Array zurückgibt, aber das Original unverändert lässt).
Welche Strategie verwenden Sie normalerweise? Wann könnten Sie .sort!
im Vergleich zur :order => 'criteria'
Syntax verwenden?
Interessant. Warum würde es die Paginierung vermasseln, wenn ich, sobald ich die Informationen aus der Datenbank gezogen habe, sortiere! es? Würde das nicht passieren, bevor es für die Paginierung/Anzeige übergeben wird? –
Der Aufruf find/paginate wird die Daten in Blöcken von (sagen wir mal) 20 erhalten. Diese 20 werden aus der Datenbank herausgenommen, entsprechend der Reihenfolge, die Sie hatten, DANN sortiert nach Ihrer benutzerdefinierten Sortierfunktion. Dies bedeutet, dass die Seitenmenge nach der Klausel: order und jede Seite nach Ihrer Funktion sortiert wird. – Luke
Danke für die ausgezeichneten Erklärungen! –