小编Seb*_*lle的帖子

日期范围的自定义ActiveAdmin过滤器

我需要为属于另一个资源的日期范围创建自定义ActiveAdmin过滤器.我想按照完成调查的日期范围过滤用户列表.

我在ActiveAdmin DSL中声明了一个自定义过滤器,如下所示:

filter :by_date_completed, label: 'By Date Completed', as: :date_range
Run Code Online (Sandbox Code Playgroud)

这使我在活动管理员中成为一个很好的日期范围来限制我的用户.都好.

我还没有找到关于如何做到这一点的文档,但在我的用户模型中,我试图创建一个ransacker来处理过滤器.

ransacker :by_date_completed, {
    formatter: proc { |start_date, end_date|

        time_range = start_date..end_date
        users = User.joins(:surveys).where(surveys: { updated_at: time_range})

        users = users.map(&:id)
        users.present? ? users : nil
        }, 
    callable: proc { |parent|
    parent.table[:id]
    }
}  
Run Code Online (Sandbox Code Playgroud)

但是ActiveAdmin一次将日期范围传递给过滤器,所以我无法获得搜索范围?

在这种情况下我打算做什么?我是以错误的方式解决整个问题吗?

ruby-on-rails filter activeadmin ransack

5
推荐指数
1
解决办法
4545
查看次数

标签 统计

activeadmin ×1

filter ×1

ransack ×1

ruby-on-rails ×1