Railsでkaminariを使ってみる
Ruby2/Rails4でHello, world!を表示してみる
の続き
Railsでkaminariを使ってみる。
【参考】 AdventCalendar - kaminari徹底入門 - Qiita http://qiita.com/nysalor/items/77b9d6bc5baa41ea01f3 Railsライブラリ紹介: ページングを行う「kaminari」 TECHSCORE BLOG http://www.techscore.com/blog/2013/01/07/rails%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E7%B4%B9%E4%BB%8B-%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%B3%E3%82%B0%E3%82%92%E8%A1%8C%E3%81%86%E3%80%8Ckaminari%E3%80%8D/
データの準備
とりあえず、テーブルを作成し、
$ rails generate model item name:string price:integer
$ rake db:migrate
データを100件ほど追加する。
$ vi db/seeds.rb for i in 1..100 do Item.create(:name => '商品' + i.to_s, :price => rand(100..1000)); end
$ rake db:seed
下記のような感じでデータが入ってるのが確認できる。
$ rails db
sqlite> select name,price from items limit 5; 商品1|128 商品2|865 商品3|933 商品4|622 商品5|145 sqlite> .quit
まずは全件表示
まずは、kaminariを使わず普通に全件表示してみる。
コントローラを下記のように修正し、
$ vi app/controllers/sample_controller.rb class SampleController < ApplicationController def index @items = Item.all; end end
ビューを下記のようにする。
$ vi app/views/sample/index.html.erb <table border> <% @items.each do |item| %> <tr><td><%= item.name %><td><%= item.price %> <br> <% end %> </table>
サーバーを起動してアクセスすると、
$ rails server
kaminariを使ってみる
kaminariのgemを設定してインストールする。
$ vi Gemfile ・・・ gem 'kaminari' ←追加
$ bundle install
kaminariで1ページ分のデータを取得する。
$ vi app/controllers/sample_controller.rb class SampleController < ApplicationController def index @items = Item.page(params[:page]) end end
ビューにページャーを追加する。
$ vi app/views/sample/index.html.erb <table border> <% @items.each do |item| %> <tr><td><%= item.name %><td><%= item.price %> <br> <% end %> </table> <%= paginate @items %> ←追加
サーバーを起動してアクセスすると、
$ rails server