module ActiveAdmin::AjaxFilter
Constants
- VERSION
Public Class Methods
included(dsl)
click to toggle source
@param [ActiveAdmin::DSL] dsl @return [void]
# File lib/active_admin/ajax_filter.rb, line 14 def included(dsl) dsl.instance_eval do collection_action :filter, method: :get do scope = find_collection(except: [:pagination, :collection_decorator]) .order(params[:order]) .limit(params[:limit] || 10) .distinct search_fields = Array(params[:searchFields]) related_table_search_fields = search_fields .select { |f| f.include?('.') } .map { |f| f.split('.') } related_table_search_fields.each do |related_table, _| scope = scope.preload(related_table) end res = apply_collection_decorator(scope).map do |item| item_json = item.as_json related_table_search_fields.each do |related_table, search_field| item_json[related_table + '.' + search_field] = item.send(related_table).send(search_field) end item_json end render plain: res.to_json end end end