2010-04-19 85 views
1

我是Rails的新手。我想構建一個簡單的表單來確定列表的排序順序。 我已經實現了一個形式,這樣的人 -在rails中排序索引的表格

<%= radio_button_tag :sort, "rating" %> 
    <%= label_tag :sort_rating, "order by rating" %> 
<%= radio_button_tag :sort, "name" %> 
    <%= label_tag :sort_name, "order by name" %> 

現在我不能確定如何實現排序在控制器/模型級別。我疑惑的方面是:

  • 應該在哪裏排序進行
  • 怎麼能排序參數被持久化
  • 如何可以在代碼眼下重用

,我可以在提交之後,甚至不會選擇所選的排序方法。

我非常感謝任何指導或參考一個例子。

回答

1

應該在哪裏排序進行

在控制器:

order_by = "rating ASC" if params[:sort] == 'rating' 
... 
@people = Person.all(:order => order_by) 

或像這樣的東西。我不確定如何通過單選按鈕的形式。

怎麼能排序參數被持久化

在訪問量:

<%= radio_button_tag :sort, "rating", params[:sort] == 'rating' ? true : false %> 
... 
+0

我必須寫一堆ORDER_BY = ...如果...的每一個可能的價值?我不能讓單選按鈕映射到我想要排序的每個值? – shmichael 2010-04-19 14:33:34

+0

我認爲,如果您將單選按鈕的值完全設置爲列的名稱,那麼您可以在控制器中使用'order_by = [「?ASC」,param [:sort]]'而不是許多'if's。我使用了一個數組,因爲'param [:sort]'被消毒了。 – klew 2010-04-20 14:14:28