2011-03-09 76 views
1

如何在Rails視圖中排序但不顯示任何重複值?在不顯示重複項的情況下在Rails視圖中排序

我有以下ERB代碼。

<% @todos.each do |todo| %> 
    <h1><%= todo.due %></h1> 
    <br /> 
    <%= todo.description %><b><%= todo.list %></b> 
    <br /> 
    <% end %> 

,並會輸出如下:

2011-03-09 10:39:00 -0600

我的待辦事項對於今天我的列表

2011-03-09 10:39:00 GMT

我的另一個藤今日我的列表2

2011-03-09 10:39:00 GMT

而另一個藤今日我的列表

然而,我如何在Rails中使用以下格式輸出它?

2011-03-09 10:39:00 GMT

我的待辦事項對於今天我的列表

而另一個藤今日我的列表

我的另一Todo for Today 我的清單2

回答

1

我想補充的方法來待辦事項模式,即由到期日返回的項目列表:

#models/todo.rb  
def self.get_todo_by_due(due_date) 
    return Todo.where(:due => due_date) 
end 

,然後更改視圖:

<%distinct_due_dates = Todo.select("DISTINCT(due)") %> 

<%distinct_due_dates.each do |item|%> 
    <% due_date = item.due %> 
    <h1><%= due_date %></h1> 
    <% get_todo_by_due(due_date).each do |todo|%> 
    <br /> 
    <%= todo.description %><b><%= todo.list %></b> 
    <br /> 
    <% end%> 
<% end%> 
+1

你也可以使用'Todo.find_by_due' – 2011-03-09 11:56:41

2

@todos是一個數組,@todos.uniq!刪除重複項。在Array類中有一個方法sort!,它應該做你正在尋找的東西。

2

您應該使用group_by方法

<% @todos.group_by(&:due).each do |due, todos| %> 
    <h1><%= due %></h1> 
    <% todos.each do |todo| %> 
    <p><%= todo.description %> <b><%= todo.list %></b></p> 
    <% end %> 
<% end %> 
相關問題