[](https://badge.fury.io/rb/activeadmin-ajax_filter)
[](https://travis-ci.org/holyketzer/activeadmin-ajax_filter)
[](https://codeclimate.com/github/holyketzer/activeadmin-ajax_filter)
[](https://codeclimate.com/github/holyketzer/activeadmin-ajax_filter/coverage)
# Activeadmin::AjaxFilter
This gem extends ActiveAdmin so that your can use filters with AJAX-powered input.
Form input
Filter
## Prerequisites
This extension assumes that you're using [Active Admin](https://github.com/activeadmin/activeadmin) with [Ransack](https://github.com/activerecord-hackery/ransack). And for AJAX input it uses [selectize-rails](https://github.com/manuelvanrijn/selectize-rails)
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'activeadmin-ajax_filter'
```
And then execute:
$ bundle
Or install it yourself as:
$ gem install activeadmin-ajax_filter
## Usage
Include this line in your JavaScript code (active_admin.js.coffee)
```coffeescript
#= require selectize
#= require activeadmin-ajax_filter
```
Include this line in your CSS code (active_admin.scss)
```scss
@import "selectize";
@import "selectize.default";
@import "activeadmin-ajax_filter";
```
Include `ActiveAdmin::AjaxFilter` module to the ActiveAdmin relation resource for which you want to support filtering and add `ajax_select` filter to main resource. For example:
```ruby
# Relation-resource
ActiveAdmin.register User do
include ActiveAdmin::AjaxFilter
# ...
end
# Main resource
# As a filter
ActiveAdmin.register Invoice do
filter :user, as: :ajax_select, data: { search_fields: [:email, :customer_uid], limit: 7 }
# ...
end
# As a form input
ActiveAdmin.register Invoice do
form do |f|
f.input :language # used by ajax_search_fields
f.input :user, as: :ajax_select, data: { search_fields: [:name], static_ransack: { active_eq: true }, ajax_search_fields: [:language_id] }
# ...
end
end
```
You can use next parameters in `data` hash:
* `search_fields` - fields by which AJAX search will be performed, **required**
* `limit` - count of the items which will be requested by AJAX, by default `5`
* `value_field` - value field for html select element, by default `id`
* `ordering` - sort string like `email ASC, customer_uid DESC`, by default it uses first value of `search_fields` with `ASC` direction
* `ransack` - ransack query which will be applied, by default it's builded from `search_fields` with `or` and `contains` clauses, e.g.: `email_or_customer_uid_cont`
* `url` - url for AJAX query by default is builded from field name
* `ajax_search_fields` - array of field names. `ajax_select` input depends on `ajax_search_fields` values: e.g. you can scope user by languages.
* `static_ransack` - hash of ransack predicates which will be applied statically and independently from current input field value
## Development
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake false` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/holyketzer/activeadmin-ajax_filter. This project is intended to be a safe, welcoming space for collaboration.
## License
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).