will_paginate - 高度具体的订购

时间:2011-06-26 09:52:32

标签: ruby-on-rails ruby-on-rails-3 will-paginate

我有priority字段,有四个选项:“紧急”,“高”,“正常”和“低”。

我将此字段显示在记录表中,我使用will_paginate的顺序如下:

@projects = @company.projects.paginate :page => params[:page], :order => (sort_column + " " + sort_direction)

private
def sort_column
  ['priority', 'name'].include?(params[:sort]) ? params[:sort] : "priority"
end

上面的典型排序将给我:

  1. 正常
  2. 紧急
  3. 这个顺序错了。如何让此专栏专门针对紧急,高,正常,低?

3 个答案:

答案 0 :(得分:2)

不确定Rails是否有更简单的方法来执行此操作,但我通常看到它的方式是使用一个单独的表来保存您的优先级以及一个只是一个整数的订单字段。然后,您只需加入该表并按整数字段排序。

答案 1 :(得分:0)

我希望您建议看一下这个screencast.

排序数据列非常容易实现。

希望它对你有所帮助。

答案 2 :(得分:0)

是的,您的数据库正在按字典顺序对优先级进行排序。最简单的解决方案是将这些字符串优先级映射到整数优先级并对其进行排序 - 如@jdc建议的那样。

我可能倾向于远离将优先级存储在单独的表中,因此您不必进行连接,只需将数字优先级存储在新列中。

但这个想法是一样的。