2017-04-08 76 views
-2

我需要排序根據sort參數中發送的值進行查詢。以-開頭的sort值表示該排序應爲desc根據參數排序Rails

實例:

  • url/employee?sort=name應該使用asc
  • url/employee?sort=-name通過name排序使用desc
  • url/employee?sort=last_name通過name應該排序使用asc
  • url/employee?sort=-age通過last_name應該排序應當通過使用排序3210

在Ruby on Rails的

回答

0

你需要檢查,如果您的參數值包含-在字符串的開始;如果是,請將其刪除並使用:desc進行分類,如果它不僅僅使用:asc進行分類。

假設你有一個名爲Employee和一個名爲EmployeeControllerindex動作控制器模型,您可以執行以下操作:

# 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