我有一个事件列表,但我很难弄清楚如何在索引视图中显示特定的日期范围。
我想通过今天,本周,本月等展示活动来列出活动。
我是rails的新手,所以我尝试使用这个网站,我想出了以下适用于今天活动的内容。
@events_today = Event.find(:all, :conditions => ["date between ? and ?", Date.today, Date.tomorrow])
但我不确定如何将页面设置为自动更新并仅显示本周事件和本月。
答案 0 :(得分: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常量。
答案 1 :(得分:0)
根据我的理解,您希望在点击“周”或“月”标签时显示一周或一个月的所有活动。
当你点击一个月或一周来获取事件时,你只需要在params中发送一个月或一周(假设params [:events_in]持有'week'或'month')
对params的这个属性进行检查
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 console上运行以下命令:
Date.public_methods