Sortable Table

Rails plugin to sort tables of ActiveRecord data.

Install

script/plugin install git://github.com/dancroak/sortable_table.git

Conventions

params[:sort] and params[:order]

Examples

Use the sortable_attributes macro to list the... sortable attributes.

Then, in your index action, pass the sort_order method to your usual order parameter for will paginate or named scope call.

class UsersController < Admin::BaseController

      sortable_attributes :name, :email

      def index
        @users = User.paginate :page => params[:page], :order => sort_order
      end

    end

Time-saving Shoulda macros for your tests:

class UsersControllerTest < ActionController::TestCase

    context 'GET to index with sort and order params' do
        setup do
          5.times do |each|
              Factory :user,
                :name => "name #{each}",
                :email => "email#{each}@example.com"
            end
        end

        should_sort_by :name
        should_sort_by :email
      end

    end

And some sugar for your views:

%h1 Users

    %table
      %tr
        = sortable_table_header 'Name', :sort => 'name'
        = sortable_table_header 'E-mail', :sort => 'email'

      - @users.each do |each|
        %tr
          %td= each.name
          %td= each.email

Authors

Dan Croak, Joe Ferris, and Boston.rb.

Copyright (c) 2008 Dan Croak, released under the MIT license