Twitter like pagination for Rails
MIT License
Twitter like pagination for Rails.
more_paginate
provides a class and associations level method for paginate your records:
Tweet.paginate :all
person.tweets.paginate :all
It's just a tiny enforcement for ActiveRecord::Base#find
and it accepts the following additional params:
sort_key
sort_value
sort_id
sort_order
(optional)sort_value_method
(optional)For a full working example, please visit more_paginate_example repository.
# app/models/tweet.rb
class Tweet < ActiveRecord::Base
belongs_to :person
def self.paginate_by_creation_date(params)
paginate :all,
:sort_key => params[:sort_key] || "created_at",
:sort_value => params[:sort_value],
:sort_id => params[:sort_id],
:sort_order => "desc",
:include => :person
end
end
# app/controllers/tweets_controller.rb
class TweetsController < ApplicationController
def index
@tweets = Tweet.paginate_by_creation_date params.dup
respond_to do |format|
format.html
format.js { render :partial => "tweet_list" }
end
end
end
# app/views/tweets/index.html.erb
<h1>Tweets</h1>
<div id="tweets">
<%= render "tweet_list" %>
</div>
# app/views/tweets/_tweet_list.html.erb
<ol class="tweetList">
<% @tweets.each do |tweet| -%>
<li class="tweet">
<%= avatar tweet.person %>
<%= link_to h(tweet.person.nickname), person_path(tweet.person), :class => "bold" %>
<%= truncate h(tweet.text), :length => 140 %><br />
<span class="time"><%= link_to tweet.created_at.to_s(:db), tweet_path(tweet) %></span>
</li>
<% end -%>
<ol>
<%= more_paginate @tweets %>
# public/javascripts/application.js
$(document).ready(function() {
$("#more_link").morePaginate({ container: "#tweets" });
});
Copyright (c) 2010 Luca Guidi, released under the MIT license.