-
-
Save henrik/1214011 to your computer and use it in GitHub Desktop.
# 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 |
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)"
@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.
@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!
Add this on top:
require 'will_paginate/view_helpers/link_renderer'
require 'will_paginate/view_helpers/action_view'
thanks @grosser that one help me
this is amazing. thanks.
For reference, I had to add a require line, but only the action_view
require mentioned by @grosser was necessary.
This gist worked a treat for me, although it did also need the two require
modules pointed out by @grosser. Thanks you.
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).
Thank you @grosser
thanks @grosser but why I needed to add it while it was working on development and I was getting error only on production.
don't remember what was going on here 🤷♂️
It was better for me to add this gem https://github.com/delef/will_paginate-bootstrap4 and solves the issue
Incorporates fixes by @purcell.