2017-04-08 7 views
-2

ソートsortパラメータで送信された値に基づいてクエリが必要です。 sortの値が-で始まる場合、ソートはdescである必要があります。パラメータに従ってソート

例:

  • url/employee?sort=nameageがを使用してソートする必要がありasc
  • url/employee?sort=-ageを用いlast_name並べ替えるべきdesc
  • url/employee?sort=last_nameを用いname並べ替えるべきasc
  • url/employee?sort=-nameを用いnameでソートする必要がありRuby on Railsをで3210

あなたのパラメータ値は、文字列の先頭に -が含まれているかどうかを確認する必要があり

答えて

0

。存在する場合は、:ascを使用して並べ替えていない場合は、それを削除して:descを使用して並べ替えます。

# 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 

あなたはEmployeeindexアクションでEmployeeControllerという名前のコントローラをという名前のモデルを持っていると仮定すると、次の操作を行うことができます

関連する問題