Код в AA использует gte и lte, поэтому он пытается быть инклюзивным.Я обнаружил, что проблема заключается в использовании даты вместо времени.Проблема заключается в том, что в коде указывается только часть даты, которая при расширении до даты и времени дает ту же дату в полночь (00: 00: 00.000000).Это происходит как для gte (где это безвредно), так и для lte (где это смертельно) частей.Часть, сравнивающая lte, должна вместо этого сравнивать с временной частью 23: 59: 59.999999.
Итак, вот что я сделал, похоже, работает.
Создайте файл coffeescript по относительному пути'app / assets / javascript / make_datetime_lte_work.js.coffee' со следующим содержимым:
$(document).ready ->
$('input.datepickerlte').datepicker 'option', {dateFormat: 'yy-mm-dd 23:59:59.99999'}
Далее мы обезьяны исправим код фильтра диапазона дат.Поместите следующее содержимое в файл ruby по относительному пути 'config / initializers / make_datetime_lte_work.rb':
module ActiveAdmin
module Inputs
class FilterDateRangeInput
def to_html
input_wrapping do
[ label_html,
builder.text_field(gt_input_name, input_html_options(gt_input_name)),
template.content_tag(:span, "-", :class => "seperator"),
builder.text_field(lt_input_name, input_html_options(lt_input_name, ' datepickerlte')),
].join("\n").html_safe
end
end
def input_html_options(input_name = gt_input_name, extra_class = '')
current_value = @object.send(input_name)
{ :size => 12,
:class => "datepicker" + extra_class,
:max => 10,
:value => current_value.respond_to?(:strftime) ? current_value.strftime("%Y-%m-%d") : "" }
end
end
end
end
Теперь не забудьте отредактировать ваше приложение / assets / javascript / active_admin.js для ссылки на ваш новыйФайл JavaScript, добавив ссылку на него в комментарии.Вот как выглядит мой код:
//= require active_admin/base
//= require make_datetime_lte_work
Перезапустите приложение rails, чтобы инициализаторы были вызваны.
Теперь конечная часть диапазона дат в фильтре будет иметь 23:59:59.999999 добавляется к дате, которая будет включать (почти) весь день.
Надеюсь, что поможет!