2012-03-25 145 views
18

是否有一种优雅的方式在rails中的views/controller中实现sort asc和desc动作?在rails中实现排序asc或desc的最佳方式

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

回答

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

+0

感谢访问的名字,我用railscast形式给出 – marimaf 2012-05-06 19:21:41

+0

如果这种代码在视图,控制器或帮手来实现? – sqrcompass 2015-06-17 11:19:09

+1

执行'@ user.files.order(id::desc)'是最简单的方法,如果你是静态类型的话。 如果它的动态更好地执行'@ user.files.order(“#{criteria}#{direction}”)' – Lomefin 2015-11-20 13:52:23

-1

这里是数据的关系,告诉您如何在加入顺序

@results = Result.has_pro.ascending(:name).page(params[:page]) 
相关问题