Подтвердить что ты не робот

Фильтрация по методу в 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.

Как разместить произвольную форму поиска, чтобы отправить пользователю нужные параметры? Или еще лучше сделать фильтр на той боковой панели, которая использует этот метод?

4b9b3361

Ответ 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