Sinatra
mongoid
will_paginate

Sinatra, mongoidなアプリでwill_paginateを導入(ついでにBootstrap)

More than 3 years have passed since last update.

検討

mislav/will_paginate

https://github.com/mislav/will_paginate
本家。
でもgem installすると入るver.3.0.7だとmongoid.rbがなかったりする。
なのでGemfileの記述は下記のように。

gem 'will_paginate', :git => 'git://github.com/mislav/will_paginate.git',
                     :branch => 'master'

lucasas/will_paginate_mongoid

https://github.com/lucasas/will_paginate_mongoid
結局こっち使った。導入は次項にて。

will_paginateとwill_paginate_mongoidどっちにしようか、と。
結局はwill_paginate_mongoidにした。
kaminariも検討したけど、Bootstrap対応とか面倒そう?だったり、
will_paginateを試してるうちにできちゃったから試してない。

will_paginate_mongoidの導入

gem 'will_paginate_mongoid'
app.rb
...
require 'will_paginate_mongoid'
require 'will_paginate/view_helpers/sinatra'
...

helpers WillPaginate::Sinatra
sample.slim
== will_paginate Model.paginate

ポイント的なこと

will_paginate/view_helpers/sinatra
なんかSinatraの場合必要っぽいよ。
更にhelpers WillPaginate::Sinatraでincludeしておかないとwill_paginateがundef。

Bootstrap

デザインをBootstrapに合わせたい場合、追加で下記も。

gem 'will_paginate_mongoid'
gem 'will_paginate-bootstrap'  # add
app.rb
...
require 'will_paginate_mongoid'
require 'will_paginate/view_helpers/sinatra'
require 'will_paginate-bootstrap'
...

helpers WillPaginate::Sinatra
sample.slim
/ == will_paginate Model.paginate
== will_paginate(body_weights_paginate, renderer: BootstrapPagination::Sinatra)

普通にgemの導入してwill_paginateにオプションでrenderer: BootstrapPagination::Sinatraを追加するだけ。
とりあえずそれっぽくなる。