Paginating by initial letter (instead of N per page)

You can do this simply by using :condition (SQL Where Clause), you will have to use WHERE title LIKE "a%" (that would get all rows with the title starting with an a). A simple explanation can be found here.

Hehe, I assume you use this (I havent used the default paginator myself, wrote my own):

http://api.rubyonrails.com/classes/ActionController/Pagination.html#M000104

Using that it should be easy, and it should also be easy to change the condition. Lets say you have the controller show_news:

def show_news:   @sort_char = params[:sort_char]   @news_pages, @news =       paginate :people, :order => 'last_name, first_name', :condition => "title LIKE '#{@sort_char}%'" end

and in your view you would have both the "sort_char" available as well as all the pages starting with "sort_char". To pass the sort_char to the view you could use:

link_to "A", {:action => "show_news", :sort_char => "a"}

Of course you should write some helper-function that would print out the whole alphabet. If you look at http://api.rubyonrails.com/classes/ActionController/Pagination.html especially "Custom/Classic Pagination" you could surely work out away to do it without using the paginate-helper.