我用 js 把想传给 rails 后台的时间范围改成这种格式: 然后在 params 中其格式是这样: 我用 where 查询,然后有报错,我看了下错应该是格式引起的: 我想问有没有办法让传过来的参数到数据库查询的时候格式是: "时间".."时间" 我这里是想用 rails-simple-search 这个包去搜索东西,所以我想直接将一个日期范围传给 search,想问 rails-simple-search 能接受参数为范围的值吗
where(created_at: '2017-09-12'.to_date..'2017-09-12'.to_date)
你可以将两个时间拆分成两个参数传
var renovation_date_start = "2017-09-12"; var renovation_date_end = "2017-09-13";
rails 接受 params
# 字符串转日期 renovation_date_start = params[:renovation_date_start].to_date renovation_date_end = params[:renovation_date_end].to_date # 生成日期区间 renovation_date = renovation_date_start .. renovation_date_end # 使用 Customers.where(renovation_date: renovation_date)
或者楼主可以使用 sql between
我没把我的需求描述清楚,已经更改。 这是我在用 rails-simple-search 时遇到的问题,我想将一个日期范围直接传给 simple-search,请问 simple-seach 支持这种用法吗?
我有一个想法,但不一定是好的方法 就像我上一个回答那样,你的时间区间不一定要在 view 形成 你的 view 需要显示两个时间,最好做成两个参数,如 start_at end_at,这样你可以做默认值 后台接收 params 改造一下,在使用 params[:search] 之前,加一个 params[:search][:renovation_date]
params[:search][:renovation_date] = params[:search][:start_at].to_date .. params[:search][:end_at].to_date # 如果查询时不需要start_at和end_at的存在,可以进行delete。
rails-simple-search 能实现这个需求,是分两个参数传入的,具体请过一遍 gem 的文档就知道了