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.

http://www.w3schools.com/sql/sql_where.asp

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.