paginator

paginateって楽だなと最初は思っていたが、それでは痒いところに手が届かないことに気づく。以下のページを参考にPaginatorを使ってみた。
Paginator (任意のクエリによるページ管理)
http://rails.techno-weenie.net/question/2006/1/10/passing_specific_records_to_the_paginator

あるcontrollerのlistというメソッド。bookはacts_as_taggableなmodel
  def list
    per_page = 10
    if tag_name = params[:id]
      books = Tag.find_by_name(tag_name).tagged
      @book_pages = Paginator.new(self, books.size, per_page, @params['page'])
      first = @book_pages.current.offset
      last = [first + per_page, books.size].min
      @books = Tag.find_by_name(tag_name).tagged[first...last]
    else  
      @book_pages, @books = paginate :books, :per_page => per_page
    end
  end