ruby-on-rails – Rails 4 Ransack:lteq与datetime不兼容?

我有一个搜索搜索表单:

<h1>Scheduled Payments</h1>


<%= search_form_for [:admin, @search] do |form| %>
  <%= form.text_field :start_date_gteq, value: @order_date_gteq_with_proper_format, class: "datepicker" %> to
  <%= form.text_field :start_date_lteq, value: @order_date_lteq_with_proper_format, class: "datepicker" %>
  <%= form.submit "Search" %>
<% end %>

我希望用户能够键入2个日期,并且每个ScheduledPayment记录的start_date大于或等于第一个文本字段AND start_date小于或等于要显示的第二个文本字段.

这有效:

请注意,该记录的开始日期为2014年7月17日.当我在第二个文本字段中键入07/17/2014时,没有显示任何内容:

我猜这是因为该记录的start_date中的小时或分钟大于00:00:00,这可能是第二个字段的默认值.在这种情况下,我如何使用start_date 07/01/2014到07/17/2014 23:59:59(2014年7月17日的绝对结束)获取所有记录?

最佳答案 你能试试以下吗?

# the controller's action where you pass the params to the search method:
def your_action
  start_time = params[:start_date_gteq].to_date rescue Date.current
  start_time = start_time.beginning_of_day # sets to 00:00:00
  end_time = params[:start_date_lteq].to_date rescue Date.current
  end_time = end_time.end_of_day # sets to 23:59:59
  ScheduledPayment.search(start_time: start_time..end_time)
点赞