在我的 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])
但是在参数中我只能得到月份和年份。我如何解析这些值,以便上述查询有效?
最佳答案
嘿,你可以尝试使用 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)
关于ruby-on-rails - rails : Query ActiveRecord by month and year,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37807898/