在传入参数的ActiveAdmin中按模型方法过滤

时间:2016-10-05 15:07:37

标签: ruby-on-rails ruby activeadmin

使用Rails 4.2.1和Active Admin 1.0.0.pre2

我有一个有很多次数的公寓模型。我希望管理员能够看到索引中的公寓是否与作为参数传递的日期重叠。我在Apartment

上有一个方法
 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非常自我解释。我似乎无法弄清楚如何使ActiveAdmin的DSL通过该方法进行过滤,甚至可以使表格输入随机参数。

我能够在索引中放置一个显示available_during方法的布尔返回值的列。

if params[:from] && params[:until]
  column "available?" do |apt|
    apt.available_during(params[:from], params[:until])
  end
end

但我似乎只能通过在url中手动输入from和until params来实现这一点。

我如何设置任意搜索表单以将用户发送到正确的参数?或者更好的是,在使用该方法的侧边栏中创建一个过滤器?

1 个答案:

答案 0 :(得分:2)

看起来ActiveAdmin有一个内置的方法来在视图中创建日期选择器。可以找到这些文档here。该示例显示它与一些随机参数一起使用,您将需要根据您的用例修改它们。

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