ページネーション、もしくはページング
通常はRailsでしかできないけどやろうとすればSinatraでも実現可能
インストール
Gemfileに以下を追加
gem 'will_paginate-bootstrap'
will_paginateはActiveRecordに依存?しているようなので以下も追加しておく
gem "activerecord", :require => 'active_record' gem "mysql2"
なおrequireには
require 'will_paginate/active_record'
も追加しておく必要がある。
ページネーションを表示
先に以下のようなダミーデータを生成しておく
200.times do |i| data = Hoge.new data.name = "name#{i}" r = rand(1..1000) data.email = "#{r}@gmail.com" data.save end
でもってapp.rbで
get '/' do @data = Hoge.paginate(:page => params[:page], :per_page => 5) slim :index end
index.slim
==will_paginate @data, renderer: BootstrapPagination::Sinatra
たったこれだけでページネーションが表示される すごい
カスタム
これだけだとさすがに寂しいのでカスタマイズする 例えば以下は両隣3ページ分表示し、前、次と表示される設定
==will_paginate @data, inner_window: 3, previous_label: "前", next_label: "次", renderer: BootstrapPagination::Sinatra
逆に前リンクと次リンクのみ表示させたい場合は以下
==will_paginate @data,page_links: false, renderer: BootstrapPagination::Sinatra
この辺のアプションは公式ドキュメントに載ってる
ページネーションはできたけど
これじゃ肝心のコンテンツが載らないではないかってことでメモ
- unless @data.empty? table border=1 tr th name th e-mail - for item in @data do tr td = item[:name] td = item[:email]