Posted at

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を追加するだけ。

とりあえずそれっぽくなる。