Created
August 30, 2011 21:37
-
-
Save isaacbowen/1182136 to your computer and use it in GitHub Desktop.
extends will_paginate to play well with Twitter's Bootstrap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# config/initializers/will_paginate.rb | |
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 | |
end | |
end | |
end |
Cool, thanks! Now the app at least starts and the pagination renders, but it
doesn't seem to be using the new link renderer. Thoughts?
```
module ApplicationHelper
# Based on https://gist.github.com/1182136
class BootstrapLinkRenderer < ::WillPaginate::ViewHelpers::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 gap
tag :li, link(super, '#'), :class => 'disabled'
end
def previous_or_next_page(page, text, classname)
tag :li, link(text, page || '#'), :class => [classname[0..3],
classname, ('disabled' unless page)].join(' ')
end
end
def page_navigation_links(pages)
will_paginate(pages, :class => 'pagination', :inner_window => 2,
:outer_window => 0, :renderer => BootstrapLinkRenderer, :previous_label =>
'←'.html_safe, :next_label => '→'.html_safe)
end
end
```
```
# config/initializers/will_paginate.rb
module WillPaginate
module ActionView
def will_paginate(collection = nil, options = {})
options[:renderer] ||= BootstrapLinkRenderer
super.try :html_safe
end
end
end
```
…On Fri, Sep 9, 2011 at 12:25 PM, Steve Purcell < ***@***.***>wrote:
I had to shuffle things around a bit, and ended up with the following
inside my `ApplicationHelper` class: https://gist.github.com/1205828
##
Reply to this email directly or view it on GitHub:
https://gist.github.com/1182136
The key is that my app was already using the page_navigation_links
function above to wrap will_paginate
, so that's the function I'm using in views. The gist I posted does nothing to override will_paginate
's default options, and IIRC I didn't have any luck trying to do so using the original gist.
This is delicious. Thanks!
This does not work with will_paginate (3.0.4) and sinatra.
Checkout this gist. This works with Bootstrap 3 and Will_paginate 3.0.4 and Sinatra https://gist.github.com/expertmind/6410029
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I had to shuffle things around a bit, and ended up with the following inside my
ApplicationHelper
class: https://gist.github.com/1205828