2016-02-13 26 views
0

我是新來的Rails我怎麼能由星時間日期組結束在Ruby on Rails的時間範圍

正如我已經做了:enter link description here

但是,我SQLite中添加的結束時間數據和我想讓日曆列表顯示是這樣的:

星期六年2月7

  • 旅行(開始時間)
  • 購買一些

週日2月08日

  • 旅行
  • 照顧媽媽(開始時間)

週一2月09

  • 旅行(結束時間)
  • 照顧媽媽

週二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

*「星級時間」* - 我當時希望有一個科幻問題:-) – Stefan

+0

@Stefan,我在想'Time'這個類只適用於地球時代。 –

+0

@Stefan,thx編輯:) –

回答

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%> 

我不確定你的日期字段被稱爲是什麼。

+0

其實,是的!但是,我想''group_by'範圍從start_time到end_time,而不僅僅是start_time或end_time。不同的是'天'和日 –

相關問題