Trestle Search (trestle-search)

RubyGem Build Status Coveralls

Search plugin for the Trestle admin framework

Getting Started

These instructions assume you have a working Trestle application. To integrate trestle-search, first add it to your application's Gemfile:

gem 'trestle-search'

Run bundle install, and then restart your Rails server.

To enable search capabilities within an admin resource, define a search block:

Trestle.resource(:articles) do
  search do |query|
    if query
      Article.where("title ILIKE ?", "%#{query}%")
    else
      Article.all
    end
  end
end

The search block accepts one or two parameters; the first is the string value of the search query. The second, optional parameter is the full params hash. The block should return a chainable scope.

The search block overrides the default (or custom) collection block. However the original collection block can be called to avoid redefining scopes. For example:

Trestle.resource(:articles) do
  collection do
    Article.order(created_at: :desc).includes(:author)
  end

  search do |q|
    q ? collection.where("title ILIKE ?", "%#{q}%") : collection
  end
end

Integration Examples

  1. ActiveRecord (ILIKE)
  2. PgSearch
  3. Chewy
  4. Sunspot

License

The gem is available as open source under the terms of the LGPLv3 License.