2012-03-25 51 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]) 
相關問題