Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Extends will_paginate to play well with Twitter's Bootstrap (http://twitter.github.com/bootstrap/). Suggested location: config/initializers/will_paginate.rb
# https://gist.github.com/1214011
module WillPaginate
module ActionView
def will_paginate(collection = nil, options = {})
options[:renderer] ||= BootstrapLinkRenderer
super.try :html_safe
end
class BootstrapLinkRenderer < LinkRenderer
protected
def html_container(html)
tag :div, tag(:ul, html), container_attributes
end
def page_number(page)
tag :li, link(page, page, :rel => rel_value(page)), :class => ('active' if page == current_page)
end
def previous_or_next_page(page, text, classname)
tag :li, link(text, page || '#'), :class => [classname[0..3], classname, ('disabled' unless page)].join(' ')
end
def gap
tag :li, link(super, '#'), :class => 'disabled'
end
end
end
end
@henrik

This comment has been minimized.

Copy link
Owner Author

@henrik henrik commented Sep 13, 2011

Incorporates fixes by @purcell.

@jnwelzel

This comment has been minimized.

Copy link

@jnwelzel jnwelzel commented Sep 20, 2011

How do I use it on my application? Keep getting error "/config/initializers/will_paginate.rb:10:in `module:ActionView': uninitialized constant WillPaginate::ActionView::LinkRenderer (NameError)"

@henrik

This comment has been minimized.

Copy link
Owner Author

@henrik henrik commented Sep 21, 2011

@jnweizwel This is with a Rails 3.1 app. I have

gem 'will_paginate', '~> 3.0'

in my Gemfile. I think that should be enough. I'm guessing you use Rails 2, don't include the will_paginate gem or have an earlier version of the gem.

@jnwelzel

This comment has been minimized.

Copy link

@jnwelzel jnwelzel commented Sep 21, 2011

@henrik hello, thx for your reply, but I managed to get it working on Rails 3.0.9 by extending WillPaginate::ViewHelpers::LinkRenderer on the BootstrapLinkRenderer class. I put this class on my /lib folder and on will_paginate view helper I passedthe :renderer => BootstrapLinkRenderer option. Works like a charm now, thanks!

@grosser

This comment has been minimized.

Copy link

@grosser grosser commented Oct 12, 2011

Add this on top:

require 'will_paginate/view_helpers/link_renderer'
require 'will_paginate/view_helpers/action_view'
@ozanyurt

This comment has been minimized.

Copy link

@ozanyurt ozanyurt commented Oct 14, 2011

thanks @grosser that one help me

@j-wilkins

This comment has been minimized.

Copy link

@j-wilkins j-wilkins commented Nov 21, 2011

this is amazing. thanks.

For reference, I had to add a require line, but only the action_view require mentioned by @grosser was necessary.

@peternixey

This comment has been minimized.

Copy link

@peternixey peternixey commented Apr 19, 2012

This gist worked a treat for me, although it did also need the two require modules pointed out by @grosser. Thanks you.

@tskogberg

This comment has been minimized.

Copy link

@tskogberg tskogberg commented Sep 16, 2013

Just use: tag :ul, html, container_attributes instead of tag :div, tag(:ul, html), container_attributes
and it will work just fine with Bootstrap 3. They removed the div (http://getbootstrap.com/components/#pagination).

@ilya-github

This comment has been minimized.

Copy link

@ilya-github ilya-github commented Dec 28, 2017

Thank you @grosser

@asnad

This comment has been minimized.

Copy link

@asnad asnad commented Jul 17, 2019

thanks @grosser but why I needed to add it while it was working on development and I was getting error only on production.

@grosser

This comment has been minimized.

Copy link

@grosser grosser commented Jul 17, 2019

don't remember what was going on here 🤷‍♂️

@cristianrennella

This comment has been minimized.

Copy link

@cristianrennella cristianrennella commented Nov 3, 2020

It was better for me to add this gem https://github.com/delef/will_paginate-bootstrap4 and solves the issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment