Skip to content

Instantly share code, notes, and snippets.

@henrik
Forked from isaacbowen/will_paginate.rb
Created September 13, 2011 14:57
Show Gist options
  • Star 15 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save henrik/1214011 to your computer and use it in GitHub Desktop.
Save henrik/1214011 to your computer and use it in GitHub Desktop.
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
Copy link
Author

henrik commented Sep 13, 2011

Incorporates fixes by @purcell.

@jnwelzel
Copy link

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
Copy link
Author

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
Copy link

@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
Copy link

grosser commented Oct 12, 2011

Add this on top:

require 'will_paginate/view_helpers/link_renderer'
require 'will_paginate/view_helpers/action_view'

@ozanyurt
Copy link

thanks @grosser that one help me

@j-wilkins
Copy link

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
Copy link

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

@tskogberg
Copy link

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
Copy link

Thank you @grosser

@asnad
Copy link

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
Copy link

grosser commented Jul 17, 2019

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

@cristianrennella
Copy link

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