【问题标题】:Sorting events to show this week, month etc排序事件以显示本周、本月等
【发布时间】:2014-03-11 05:03:09
【问题描述】:

我有一个事件列表,但我正在努力弄清楚如何在索引视图中显示特定的日期范围。

我想通过显示今天、本周、本月等的事件来列出事件。

我是 Rails 新手,所以我尝试使用这个网站,我想出了以下适用于今天活动的内容。

@events_today = Event.find(:all, :conditions => ["date between ? and ?", Date.today, Date.tomorrow])

但我不确定如何将页面设置为自动更新并仅显示本周和本月的事件。

【问题讨论】:

    标签: ruby-on-rails-4


    【解决方案1】:

    你的基本查询应该是这样的:

    Event.where(date: date_range)
    

    现在,在调用此查询之前,您可以设置日期范围变量。如果你只想要这周:

    date_range  = Date.today.beginning_of_week..Date.today
    Event.where(date: date_range)
    

    现在你可以做各种各样的事情。您可以使用表单或下拉选择来选择开始和结束日期或自定义期间。在这种情况下, date_range 是根据您的参数设置的。您也可以始终使用一个预定义的时间段。

    如果您想处理多个日期范围,最好在模型(或关注点)中设置 last_week、last_month 等范围。或者您可以简单地在初始化程序中定义 date_range 常量。

    【讨论】:

    • 很高兴听到。如果它解决了您的问题,您能否投票并接受我的回答?
    【解决方案2】:

    据我了解,您希望通过单击“周”或“月”选项卡从视图中显示一周或一个月的所有事件。

    当您单击月份或星期以获取事件时,您只需在参数中发送月份或星期(假设 params[:events_in] 保持“星期”或“月份”)

    应用检查参数的这个属性

    def get_events_in_week_or_month
      if params[:events_in] =='week'
        start_date_of_time_period = Date.today.beginning_of_week
        end_date_of_time_period = Date.today.end_of_week
      else
        start_date_of_time_period = Date.today.beginning_of_month
        end_date_of_time_period = Date.today.end_of_month
      end
    
      #events in descending order
      @events = Event.where("date between ? and ? ", start_date_of_time_period, end_date_of_time_period).order("created_at DESC")
    
      #events in ascending order
      @events = Event.where("date between ? and ? ", start_date_of_time_period, end_date_of_time_period)
    end
    

    要获取更多日期类方法,您应该在 rails 控制台上运行以下命令:

     Date.public_methods
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 2020-01-19
      • 2015-11-30
      • 2020-10-14
      相关资源
      最近更新 更多