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

时间:2012-03-25 04:18:05

标签: ruby-on-rails-3 sorting

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

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

3 个答案:

答案 0 :(得分:35)

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

@plans = Plan.order("price")

@files= @user.files.order("id DESC").all
@dates = @files.group_by { |t| t.created_at }

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

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

答案 1 :(得分:3)

我最近使用了一个名为sorted的宝石,效果很好,以防你想要使用预先打包的解决方案,而不是推出自己的解决方案。

https://github.com/mynameisrufus/sorted

答案 2 :(得分:-1)

这里是数据关系,显示我们如何以加入顺序访问名称

@results = Result.has_pro.ascending(:name).page(params[:page])