2017-04-08 8 views
-2

Ich brauche Sortierung eine Abfrage nach dem Wert im sort Parameter gesendet. Ein sort Wert beginnend mit - zeigt an, dass die Sortierung desc sein sollte.Sortieren nach Parametern Schienen

Beispiele:

  • url/employee?sort=name sollte von name sortieren asc
  • url/employee?sort=-name Verwendung von name sortieren soll asc
  • url/employee?sort=-age Verwendung desc
  • url/employee?sort=last_name Verwendung sollte von age Verwendungsortieren, indem last_name sortieren

in Ruby on Rails

Antwort

0

Sie müssen überprüfen, ob Ihr Parameterwert ein - am Anfang der Zeichenfolge enthält; Wenn dies der Fall ist, entfernen Sie sie und sortieren Sie sie mit :desc, wenn sie nicht nur unter Verwendung von :asc sortiert wird.

Angenommen, Sie ein Modell mit dem Namen Employee und Controller EmployeeController mit einer index Aktion mit dem Namen, können Sie folgendes tun:

# employee_controller.rb 

def index 
    attribute = params["sort"].sub("-", "") 
    order = define_order(params["sort"]) 
    @employees = Employees.all.order(attribute => order) 
end 

private 

def define_order(attribute) 
    attribute.start_with?("-") ? :desc : :asc 
end