jodosha / more_paginate

Twitter like pagination for Rails

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

more_paginate

Twitter like pagination for Rails.

Basic usage

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)

Example

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" });
});

Acknowledgements

Copyright

Copyright (c) 2010 Luca Guidi, released under the MIT license.

About

Twitter like pagination for Rails

License:MIT License


Languages

Language:Ruby 93.9%Language:JavaScript 6.1%