Фильтрация по методу в ActiveAdmin с параметрами, переданными в
Использование Rails 4.2.1 и Active Admin 1.0.0.pre2
У меня есть квартира, у которой много Занятий. Я хочу, чтобы администраторы могли видеть, совпадает ли квартира в индексе с датами, переданными в качестве параметров. У меня есть метод для квартиры
def available_during(start_date, end_date)
return !self.occupancies.any? { |occ| occ.date_range_overlap(Date.parse(start_date), Date.parse(end_date)) }
end
Возвращает true, если в квартире есть занятие, которое перекрывается с двумя датами. Метод date_range_overlap
при заполнении довольно понятен. Я не могу понять, как сделать DSL ActiveAdmin для фильтрации этим методом или даже сделать форму для ввода случайных параметров.
Мне удалось разместить столбец, который показывает логическое возвращаемое значение метода available_during в индексе.
if params[:from] && params[:until]
column "available?" do |apt|
apt.available_during(params[:from], params[:until])
end
end
Но мне кажется, что я могу заставить это работать, вручную введя параметры from и до params в url.
Как разместить произвольную форму поиска, чтобы отправить пользователю нужные параметры? Или еще лучше сделать фильтр на той боковой панели, которая использует этот метод?
Ответы
Ответ 1
Похоже, что ActiveAdmin имеет встроенный метод для создания выбора даты в представлении. Эти документы можно найти здесь. В этом примере показано, что он используется с некоторыми случайными параметрами, вы захотите изменить их для своего варианта использования.
form do |f|
f.input :from, as: :datepicker,
datepicker_options: {
min_date: "2013-10-8",
max_date: "+3D"
}
f.input :until, as: :datepicker,
datepicker_options: {
min_date: 3.days.ago.to_date,
max_date: "+1W +5D"
}
end