在rails中实现排序asc或desc的最佳方法

mar*_*maf 19 sorting ruby-on-rails-3

是否有一种优雅的方式在rails中的视图/控制器中实现排序asc和desc操作?

我所拥有的是常见的index.html.erb视图,其中列出了我的某些模型的所有数据,并且我想添加一些小按钮(或使标题可单击)以对列的升序或降序进行排序.我想知道是否有一种优雅而有效的方法来实现它,或者我应该为每个列(或按钮)添加一个新的控制器我希望这个动作发生.

kob*_*ltz 35

这是我正在使用的两个例子.第一个@plans是我只想从最低到最高排序小数.另一个例子有点复杂,我想从最新到最旧订购用户文件.然后,我使用第二个变量按创建日期对文件进行分组.这两个例子都在控制器中执行.

@plans = Plan.order("price")

@files= @user.files.order("id DESC").all
@dates = @files.group_by { |t| t.created_at }
Run Code Online (Sandbox Code Playgroud)

对于视图中的可点击按钮,请查看Ryan Bates的Railscast剧集,其中包含此信息.

http://railscasts.com/episodes/228-sortable-table-columns

  • 如果您是静态类型,那么执行`@user.files.order(id :: desc)`是最优雅的方法.如果它的动态更好,只需做`@ user.files.order("#{criteria}#{direction}")` (2认同)