我有一个搜索搜索表单:
<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小于或等于第二个文本字段以显示
这有效:
请注意,该记录的开始日期为07/17/2014
。当我在第二个文本字段中输入07/17/2014
时,没有任何内容显示:
我猜是因为该记录的start_date中的小时或分钟超过+00:00:00,这可能是第二个字段的默认值。在这种情况下,我如何获取start_date 07/01/2014
到07/17/2014 23:59:59
的所有记录(07/17/2014
的绝对结尾)?
答案 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)