dm-pagerを試す
dm-pagerを試したのでメモ
前準備
wikipediaから日本の国道データを引っ張ってきてsqliteに突っ込んだ。
でsinatraでdatamapperを使って表示。
app.rb
... get '/' do @roads = Road.all haml :index end ...
インストール
gem install dm-pager
とりあえず表示
app.rb
... get '/' do @roads = Road.page #変更 haml :index end ...
views/index.haml
... = @roads.pager.to_html "/" #追加
あとCSSでページのリンクを横並びにする。
ページの切り替え
このままではページのリンクを押してもページが切り替わらない。
ページのリンクからpageパラメータが渡されるので、それをpageメソッドに渡す必要がある。
app.rb
... get '/' do cur_page = params[:page] ? params[:page].to_i : 1 #追加 @roads = Road.page cur_page #変更 haml :index end ...
デフォルトの変更
デフォルトだと1ページにつき6件表示して
ページのリンクは7ページ分表示するようになっている。
これを変更するには :per_page と :size オプションを使う。
app.rb
... get '/' do cur_page = params[:page] ? params[:page].to_i : 1 @roads = Road.page cur_page, :per_page => 8 #変更 haml :index end ...
views/index.haml
... = @roads.pager.to_html "/", :size => 5 #変更
ページのリンクの「Next」「Last」「...」などは下記のオプションで変更する。
- :first_text
- :previous_text
- :next_text
- :last_text
- :more_text
app.rb
... configure do ... PAGER_OPT = #追加 { :size => 5, #追加 :first_text => '最初', #追加 :previous_text => '前へ', #追加 :next_text => '次へ', #追加 :last_text => '最後' } #追加 end ...
views/index.haml
... = @roads.pager.to_html "/", PAGER_OPT #変更