Rails 时间范围格式问题

ZhouYiYu · 发布于 2017年09月13日 · 最后由 pinewong 回复于 2017年09月15日 · 326 次阅读
96

我用js把想传给rails后台的时间范围改成这种格式:

然后在params中其格式是这样:

我用where查询,然后有报错,我看了下错应该是格式引起的:

我想问有没有办法让传过来的参数到数据库查询的时候格式是: "时间".."时间"
我这里是想用rails-simple-search这个包去搜索东西,所以我想直接将一个日期范围传给search,想问rails-simple-search能接受参数为范围的值吗

共收到 5 条回复
E8ebf1
where(created_at: '2017-09-12'.to_date..'2017-09-12'.to_date)

😂

26664

你可以将两个时间拆分成两个参数传

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

96
26664mapana 回复

我没把我的需求描述清楚,已经更改。 这是我在用rails-simple-search时遇到的问题,我想将一个日期范围直接传给simple-search,请问simple-seach支持这种用法吗?

26664

我有一个想法,但不一定是好的方法
就像我上一个回答那样,你的时间区间不一定要在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。
0967c2

rails-simple-search 能实现这个需求,是分两个参数传入的,具体请过一遍 gem 的文档就知道了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册