An easy way to paginate a list of ActiveRecord objects alphabetically by any given attribute.
class User < ActiveRecord::Base
paginate_alphabetically :by => :surname
end
class UsersController < ApplicationController
def index
@users = User.alphabetical_group(params[:letter])
end
end
= alphabetically_paginate(@users)
%ul.users
- @users.each do |user|
%li= user.surname
The tests use a sqlite3 in-memory database to be able to run separately from your application.
rake test
The initial model code will take a show_all_letters option, in order to skip the (slow) letter finding code:
class User < ActiveRecord::Base
paginate_alphabetically :by => :surname, :show_all_letters => true
end
To use alphanumeric functionality use numeric => true
class User < ActiveRecord::Base
paginate_alphabetically :by => :surname, :numeric => true
end
Thanks to hoverlover the alphabetically_paginate view helper can take an options hash which allows you to override the class if you don’t want it to be ‘pagination’. For example:
= alphabetically_paginate(@users, :class => 'user-pagination')
= alphabetically_paginate(@users, :class => 'user-pagination', :numeric => true)
We welcome feedback, issues and especially pull requests. Please make sure your change is tested. Please do not update the VERSION file – we’ll do that automatically. Thanks!
Copyright © 2010 Eden Development, released under the MIT license