A small plugin allowing you to use pagination from will_paginate inside your Liquid templates. This is a new version of the older plugin at artweb-design. I’ve basically re-written parts of it to work with the very latest versions of Liquid and Will-Paginate (see below for the version information). I will try to keep this plugin up to date with ongoing changes in the Liquid and Will-Paginate projects. Check the latest commit logs and this doc for more information.
Ongoing issues with this project include;
- needs better tests, possibly switching to using RSpec
- currently has only been tested within my own project – needs further testing
What do you need?
- Rails >= 2.2
- Liquid >= 2.0.0 (as a gem or plugin)
- Will-Paginate >= 2.3.8 (as a gem or plugin)
script/plugin install git://github.com/matthutchinson/will_paginate-liquidized.git
In your controller you might have something like this;
class MoviesController < ApplicationController # GET /movies # GET /movies.xml def index @movies = Movie.all.paginate(:page => params[:page], :per_page => 10) respond_to do |format| format.html # index.html.erb format.xml { render :xml => @movies } end end end
In your view put something like this in movies/index.html.erb;
<%= Liquid::Template.parse("{{ movies | will_paginate_liquid }}").render({'movies' => @movies}, :registers => {:controller => @controller}) %>
NOTE: you must remember to pass the current controller in rendering (:registers). If anyone can think of a way around this let me know.
You won’t get any pagination links until you exceed 10 (per_page setting defined in controller action). You can also pass the following other optional arguments to the will_paginate_liquid method.
{{ movies | will_paginate_liquid : 'anchor', 'prev_label', 'next_label' }} anchor: apply a #anchor to all generated urls in the pagination prev_label: label for the previous page button next_label: label for the next page button
Registers a new filter tag for Liquid to access will_paginate using a custom LinkRenderer so it can reference the @controller from the current liquid context[:registers]. Uses ActionView::Helpers::UrlHelper, ActionView::Helpers::TagHelper for constructing the pagination links.
Who’s who?
- Authored by Matthew Hutchinson
- Modified from the original plugin at Artweb Design
- Will-Paginate by mislav
- Liquid by tobi
Right now this script is provided without warranty, or support from the author.
Will Paginate Liquidized by Matthew Hutchinson is licensed under a Creative Commons Attribution 2.0 UK: England & Wales License.