2017-04-08 105 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