2016-08-08 10 views
0

bestellen Ich habe dies in der Steuerung:nicht richtig Kann in alphabetischer Reihenfolge in Rails

@players = Player.all.order(:last_name).group_by{|player| player.last_name[0]} 

Und in der Ansicht habe ich:

- @players.each do |letter, players| 

    %h2= letter 

    - players.each do |player| 

Das in den Spielern führt alphabetisch gruppiert sind, aber sie sind nicht bestellt alphabetisch innerhalb dieser Gruppen, zB:

  • Almunia
  • Adams
  • Angha
  • etc

Mit anderen Worten, sollte Adams vor Almunia natürlich kommen.

Was mache ich falsch?

+0

anzupassen Ich denke [this] (http://StackOverflow.com/questions/852705/sort-a-list-of-objects-by-using-their-attributes -in-ruby) Frage hat eine angemessene/ähnliche Antwort. –

+0

Ich bekomme keine Antwort von diesem Thread. Vielleicht lese ich es nicht richtig, aber es scheint nichts mit der Sortierung nach aa> aab> ab> ac> aca, etc. zu tun. – mantralux

Antwort

0

Ein wenig überraschend, aber ich bin mir nicht sicher group_by garantiert die Reihenfolge der Elemente einmal gruppiert. Fix wäre, Ihre players.each Schleife auf etwas wie players.sort_by(&:last_name).each

+0

Ergebnis: undefinierte Methode 'last_name 'für # < Array: 0x007f9f2d037040> – mantralux

+0

'- players.each do | player |' -> '- players.sort_by (&: last_name) .der do | player |' Der zweite jeder Loop, nicht der erste. –

+0

Das ergibt keinen Unterschied, Spieler haben immer noch herumgewirbelt. – mantralux

Verwandte Themen