Skip to content
Add filtering to tables, lists, etc.
Ruby JavaScript
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
app/views/with_filters
lib
spec
.gitignore
.yardopts
Gemfile
LICENSE
README.md
Rakefile
changelog.md
with_filters.gemspec

README.md

with_filters

Add filtering to tables, lists, etc.

This project follows Semantic Versioning.

Installation

$ gem install with_filters

If you're using Bundler, add this to your Gemfile:

gem 'with_filters', '~> 0.1.0'

Support

Ruby 1.9
Rails 3.1
Database Framework ActiveRecord

Usage

In your controller:

@data = Data.with_filters(params, fields: {
  email_address: {match: :contains},
  full_name:     ->(value, scope) {
    first_word, second_word = value.strip.split(/\s+/)

    if second_word
      scope.where(['first_name LIKE ? OR last_name LIKE ?', first_word, first_word])
    else
      scope.where(['first_name LIKE ? AND last_name LIKE ?', first_word, second_word])
    end
  }
}).order('created_at DESC').page(params[:page] || 1)

In your view:

<%= filter_form_for(@data) do |f| %>
  <%# pass through variables needed in the form but not associated with filtering %>
  <% if params[:order] %>
    <% f.hidden(:order, name: 'order', value: params[:order]) %>
  <% end %>

  <% f.input(:id) %>
  <% f.input_range(:created_at, label: 'Account Created On') %> <%# creates a filter to search a range %>
  <% f.input(:full_name) %>
  <% f.input(:email_address) %>

  <% f.action(:submit, label: 'Filter') %>
<% end %>
Something went wrong with that request. Please try again.