rails中的常用分页一

snippets.dzone.com/posts/show/389

Sometimes it's nearly impossible to paginate a result set using the built-in :limit and :offset parameters of find(:all). Instead, you can fetch a complicated query and paginate the results afterward.

Add the following to application.rb:
ruby 代码
 
  1. def paginate_collection(collection, options = {})  
  2.    default_options = {:per_page => 10, :page => 1}  
  3.    options = default_options.merge options  
  4.      
  5.    pages = Paginator.new self, collection.size, options[:per_page], options[:page]  
  6.    first = pages.current.offset  
  7.    last = [first + options[:per_page], collection.size].min  
  8.    slice = collection[first...last]  
  9.    return [pages, slice]  
  10.  end  

Call it from within your action like this:
ruby 代码
 
  1. @pages@users = paginate_collection User.find_custom_query, :page => @params[:page]  

你可能感兴趣的:(Ruby,Rails)