# Hanami::Pagination Pagination gem for your hanami applications. Based on ROM::Pagination plugin. ## Installation Add this line to your application's Gemfile: ```ruby gem 'hanami-pagination' ``` And then execute: $ bundle Or install it yourself as: $ gem install hanami-pagination Include pagination helpers to view and action: ```ruby # in action module Web::Controllers::Books class Index include Web::Action include Hanami::Pagination::Action def call(params) # ... end end end ``` ```ruby # in view module Web::Views::Books class Index include Web::View include Hanami::Pagination::View end end ``` After that you need to enable pagination for each repository class: ```ruby # in config/initializers/enable_pagination.rb BookRepository.enable_pagination! PostRepository.enable_pagination! # etc ``` ## Usage Now you have special methods for working with pagination in your app. ### Action #### `all_for_page` This helper takes **only rom/hanami relation** and sets `pager` expose. Returns array. Example: ```ruby module Web::Controllers::Books class Index include Web::Action include Hanami::Pagination::Action expose :books def call(params) repo = BookRepository.new @books = all_for_page(repo.books) end end end ``` Also you can set `limit` (default 100) for each action: ```ruby module Web::Controllers::Books class Index include Web::Action include Hanami::Pagination::Action expose :books def call(params) repo = BookRepository.new @books = all_for_page(repo.books) end def limit 25 end end end ``` #### `pager` expose When you include `Pagination::Action` to your action you get `pager` getter with `Hanami::Pagination::Pager` instance. Please check source code for this class. In future I'll add full documentation. Now we support this methods: - `next_page` - `prev_page` - `total` - `total_pages` - `current_page?` - `pages_range` - `all_pages` - `first_page?` - `last_page?` - `previous_page_path` - `next_page_path` - `n_page_path` - `paginate` ### View #### `paginate(page)` Returns `