Нещодавно вийшла друга версія популярного HTML-фреймворка
Bootstrap. Для тих хто не в курсі що це, настійно рекомендую ознайомитися. Цей набір дозволяє створювати шаблони сайтів за лічені години(перевірено на власному досвіді) на основі готових наборів стилів, які різко спрощують розстановку елементів на сторінці та забезпечують якісну типографію.
Крім того вийшла версія
will_paginate 3.0.3, у яку крім усього іншого також ввійшов
коміт, що виправляв кілька багів пов'язаних з
DataMapper.
І у зв'язку з цієї радісною новиною, я вирішив прикрутити пагінацію до свого проекту на
Sinatra, у якому, як ви вже мабуть здогадалися використовується
Bootstrap.
Підключаємо необхідні бібліотеки:
require 'will_paginate'
require 'will_paginate/data_mapper'
|
Вказуємо will_paginate генерувати теги у стилі Bootstrap:
class BootstrapLinkRenderer < ::WillPaginate::Sinatra::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
|
І на останок пишемо помічник, який дозволить виводити навігацію у простій формі:
== page_navigation_links @events
|
helpers do
def page_navigation_links(pages)
will_paginate(pages, :class => 'pagination' , :inner_window => 2 , :outer_window => 0 , :renderer => BootstrapLinkRenderer, :previous_label => '←' , :next_label => '→' )
end
end
|
Немає коментарів:
Дописати коментар