13

在此处输入图像描述

上图就是我的意思。我认为代码应该是这样的:

    <% @days_from_this_week.each do |day| %>
        <%= day.name %>
        <!--e.g. Monday-->
        <% day.sessions do |session| %>
            <% @session_categories.each do |category| %>
                <!--categories means the Sesion1/2/3/4 category
                A day's sessionX could be empty, so we have to determine wheather a session matches its cateogry, 
                and then display it in the table
                -->
                <% if session.category == category %>
                    <%= session.content %>
                 <% end %>
            <% end %>
         <% end %>
    <% end %>

但是如何获得current week?以及如何获得name of a day?而要浏览这个日历,pre_week也是next_week需要的。

我找到prev_weeknext_week方法,但似乎一周后的某一天返回,这不是我需要的。

一个可能的解决方案是here,但我不知道如何使用它。

更新:我找到了一个可行的解决方案,但仍在寻找更好的代码:

  <!--  @date = params[:date] ? Date.parse(params[:date]) : Date.today
    first=@date.at_beginning_of_week
    last=@date.at_beginning_of_week + 6
    @days= (first..last).to_a-->
    <% @days.each do |day| %>
        <div>
          <%= day %>
        </div>

    <% end %>
4

2 回答 2

15

在您设置的控制器中尝试此操作@days_from_this_week

today = Date.today # Today's date
@days_from_this_week = (today.at_beginning_of_week..today.at_end_of_week).map

要显示它的作用:

> (today.at_beginning_of_week..today.at_end_of_week).map.each { |day| day }
> [Mon, 12 Aug 2013, Tue, 13 Aug 2013, Wed, 14 Aug 2013, Thu, 15 Aug 2013, Fri, 16 Aug 2013, Sat, 17 Aug 2013, Sun, 18 Aug 2013]

更新查询文章的附加请求,发布于:

查找开始日期午夜到第二天之间的所有文章。

start_time = Time.parse(date.to_s)
end_time = 1.day.since(start_time)
Article.where('published_on >= ? and published_on < ?', start_time, end_time)
于 2013-08-13T03:33:03.517 回答
5

解决方案在这里

本周的方法类似于:

def current_week
  date = Date.today.beginning_of_week
  return (date..date + 6.days).to_a
end

然后当你有日期数组时,你可以使用 strftime 来格式化日期

day.strftime("%A") # prints weekday name
于 2013-08-13T02:54:09.977 回答