Rails 4 + Ransack:lteq与datetime不兼容?

时间:2014-07-17 19:34:39

标签: ruby-on-rails ransack

我有一个搜索搜索表单:

<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小于或等于第二个文本字段以显示

这有效:

enter image description here

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

enter image description here

我猜是因为该记录的start_date中的小时或分钟超过+00:00:00,这可能是第二个字段的默认值。在这种情况下,我如何获取start_date 07/01/201407/17/2014 23:59:59的所有记录(07/17/2014的绝对结尾)?

1 个答案:

答案 0 :(得分:3)

您可以尝试以下方法吗?

# 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)