首页 > 解决方案 > 使用 Ransack gem 的 Rails 应用程序日期时间搜索

问题描述

我正要实现一个搜索功能,用户可以在其中过滤日期时间列。

我目前正在使用 Rails datetime_field_tag,但是我似乎无法使其与 ransack 一起使用,人们可以选择以小时和分钟为单位的日期,然后是 AM 或 PM。

用户可以以这种格式输入日期时间:dd/mm/yyyy hh:mm AM/PM

我正在搜索的列是日期时间格式,例如:2021-05-12 09:09:48

实现这个的最佳方法是什么?洗劫与否?如何?
只是我第一次使用 ransack 实现日期时间搜索功能,

我尝试在线搜索,但似乎找不到好的解决方案。谢谢。

标签: ruby-on-railsrubydatetimeransack

解决方案


如果您从参数中接收字符串格式的日期时间并直接将其传递给 ransack,那么您应该先将该字符串转换为 24 小时格式字符串(也可以使用 db 格式),然后将其传递给 ransack。

例如

query_value = Time.zone.parse(params[:created_at_filter]).to_s(:db)
Person.ransack(created_at_eq: query_value)

推荐阅读