2013-06-18 45 views
1

你好,我試圖按日期製作分組新聞。我不明白是什麼問題?如何group_by在軌道日

feed_entries_controller.rb

def index 
    @feed_entries = FeedEntry.page(params[:page]).per_page(12).where('published_at < ?', DateTime.now) 
    @feed_entries_by_day = @feed_entries.group_by { |t| t.published_at.beginning_of_day } 
end 

index.html.erb

<% @feed_entries_by_day.each do |day, feed_entries| %> 
    <h3><%= h day.strftime("%d %B %Y") %></h3> 
    <%= render @feed_entries%> 
<% end %> 
+1

嘗試使用to_date:'@feed_entries_by_day = @ feed_entries.group_by {| t | t.published_at.to_date}' – MrYoshiji

+0

@MrYoshiji不起作用 – Anton

+1

你的錯誤日誌說什麼? –

回答

0

在沒有看到數據,我懷疑我們的問題是published_at列還包含time和我們的只是有興趣date部分用於查詢和分組,並且我們需要參考視圖中的分組數據..

如果是這樣的話,我們可以修改我們的.where()條款,像這樣:

feed_entries_controller.rb

def index 
    feed_entries = FeedEntry 
    .page(params[:page]) 
    .per_page(12) 
    .where('published_at::date <= ?', Date.current) 

    @feed_entries_by_day = feed_entries.group_by { |t| t.published_at.to_date } 
end 

而且在我們看來,我們需要選擇一個不同的名稱,通過我們的分組feed_entries迭代(我選擇entry

index.html.erb

<% @feed_entries_by_day.each do |day, entry| %> 
    <h3><%= h day.strftime("%d %B %Y") %></h3> 
    <%= render entry%> 
<% end %>