2013-06-18 39 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 %>