在我的rails项目中,有一个搜索页面,其中包含日期范围值以( - )分隔的下拉列表。下拉选项如下:
Jan,2014 - March,2014
April,2014 - Jun,2014
....
Oct,2014 - Dec,2014
用户可以选择其中一个日期范围,只显示属于所选日期范围的记录。要过滤的字段为start_date
,是一个时间戳字段。
所以我想要这样的事情:
filter = params[:filter].split("-")
@posts = Post.where(start_date: filter[0]..filter[1])
但是在params中我只有一个月和一年。如何解析这些值以便上述查询有效?
答案 0 :(得分:4)
嘿,您可以尝试使用Date.strptime
解析字符串到目前为止filter = params[:filter].split(" - ")
使用strptime
st_date = Date.strptime(filter[0],"%B,%Y")
end_date = Date.strptime(filter[1],"%B,%Y")
创建日期范围作为第一个月的开头到第二个月的结束
date_range = st_date.beginning_of_month..end_date.end_of_month
@posts = Post.where(:start_date => date_range)