2016-10-05 18 views
11

使用Rails 4.2.1和Active Admin 1.0.0.pre2在ActiveAdmin模型中通过方法进行过滤使用参数

我有一个Apartment模型,它有很多Occupancies。我希望管理员能够查看索引中的公寓是否与作为params传入的日期重叠。我在公寓有一个方法

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 

但我似乎只能通过手动输入from和直到params在url中得到这个工作。

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

回答

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 
相关问题