如何在Ruby On Rails中按星期从星期到结束时间范围进行分组

时间:2016-02-13 16:25:15

标签: ruby-on-rails ruby

我是Rails的新手

正如我所做的那样:enter link description here

但是,我在SQLite中添加结束时间数据,我想让日历列表显示如下:

07年2月6日星期六

  • 旅行(开始时间)
  • 买东西

2008年2月2日星期日

  • 照顾妈妈(开始时间)

09年2月1日星期一

  • 旅行(结束时间)
  • 照顾妈妈

2月10日星期二

  • 照顾妈妈(结束时间)

所以,我使用For loop来做那个

查看:

    <% @start_date.each do |day, posts| %>
  <% if day.to_date == Date.today %>
    <h4 id="today_title">Today <%= day.strftime("%b %d")%></h4>
    <% posts.each do |post| %>
      <p class="post_title">。<%= post.title %> <%= post.start_time.strftime("%H:%M")%></p>
    <%end%>
  <%elsif day.to_date == Date.today-1.day %>
    <h4 class="other_day_title">Yesterday <%= day.strftime("%b %d")%></h4>
    <% posts.each do |post| %>
      <p class="post_title">。<%= post.title %> <%= post.start_time.strftime("%H:%M")%></p>
    <%end%>  
  <%elsif day.to_date == Date.today+1.day %>
    <h4 class="other_day_title">Tomorrow <%= day.strftime("%b %d")%></h4>
    <% posts.each do |post| %>
      <p class="post_title">。<%= post.title %> <%= post.start_time.strftime("%H:%M")%></p>
    <%end%>
  <%else%>
    <% posts.each do |post| %>
    <% for daytime in post.start_time.to_date..post.end_time.to_date %>
      <h4 class="other_day_title"><%= daytime.strftime("%A %b %d") %></h4>
        <p class="post_title">。<%= post.title %> <%= post.start_time.strftime("%H:%M")%> to <%= post.end_time.strftime("%A %b %d %H:%M")%></p>
      <%end%>
    <%end%>
  <%end%>
<%end%>

控制器:

def index
@posts = Post.all.order(:start_time)
@date = params[:month] ? Date.parse(params[:month]) : Date.today
@start_date = @posts.group_by {|t| t.start_time.to_date}
@end_date = @posts.group_by {|t| t.end_time.to_date} 
end

我得到了这个:

enter image description here

它无法将活动分发到每一天的酒吧。

我尝试更改控制器

def index
@posts = Post.all.order(:start_time)
@date = params[:month] ? Date.parse(params[:month]) : Date.today
@start_date = @posts.group_by {|t| t.start_time.to_date..t.end_time.to_date}
@end_date = @posts.group_by {|t| t.end_time.to_date} 
end

我收到了一个错误:

undefined method `strftime' for Tue, 09 Feb 2016..Wed, 10 Feb 2016:Range

我该如何解决?

感谢阅读:)

1 个答案:

答案 0 :(得分:0)

您可能希望group_by日期并列出每个日期的所有活动。它看起来像这样:

<% posts.group_by(&:date).each do |day, posts| %>
  <h4 class="other_day_title"><%= day.strftime("%A %b %d") %></h4>
  <% posts.each do |post| %>
    <p class="post_title">。<%= post.title %> <%= post.start_time.strftime("%H:%M")%> to <%= post.end_time.strftime("%A %b %d %H:%M")%></p>
  <%end%>
<%end%>

我不确定你的日期字段到底是什么。