我有一个搜索搜索表单:
<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)