Pada tutorial kali ini kita akan membahas bagaimana membuat sebuah paginasi di aplikasi Ruby on Rails, apa itu paginasi ? paginasi atau pagination merupakan pembatas data perhalaman agar data tidak ditampilkan semua kedalam web browser.
Pada pada kesempatan kali ini kita akan mencoba menggunakan Gem Pagination yang populer, yaitu kaminari.
langsung saja kita praktek, mari kita buat aplikasi Rails baru, ketik perintah berikut untuk menginstall aplikasi baru Ruby on Rails:
Rails new Blog
Perintah diatas otomatis akan membuat sebuah project aplikasi baru dengan nama Blog
, setelah proses instalasi selesai, silahkan tambahkan kode berikut ini di dalam Gem
file:
gem 'kaminari'
Setelah itu jalankan:
bundle install
Setelah proses instalasi gem selesai, mari kita buat model baru dengan mengetikkan perintah:
rails g model Post title body:string
Kemudian jalankan:
rake db:migrate
Perintah diatas digunakan untuk migrasi database dari aplikasi kita ke database, oke next masuk ke folder db/seeds.rb
, kemudian masukkan kode berikut ini:
(1..100).each do |i|
Post.create!(title: "Lipsum Post #{i}", body: %{
Nullam hendrerit iaculis sodales. Curabitur varius nibh arcu, id molestie nibh fermentum vitae. Cras quis semper dui. Cras porttitor urna sit amet risus vehicula tempor. Maecenas quis tempor ligula. Donec et nibh eu leo volutpat placerat. Fusce vulputate elit in nisi pretium, vel fermentum mi fermentum. Mauris scelerisque, lectus non luctus ultricies, urna eros tincidunt risus, at varius sapien diam id erat.
})
end
Kode diatas akan membuat fake data, jadi kita tidak perlu repot-repot memasukkan data kedalam database secara manual
Oke, kemudian jalankan perintah
rake db:seed
Selanjutnya kita akan membuat sebuah controller baru, dengan mengetikkan perintah berikut ini di terminal:
rails g controller Posts index
Secara otomatis akan tergenerate sebuah file baru di folder app/controllers/posts_controller.rb
Oke sekarang kita akan merubah root aplikasi kita ke Post, buka file routes di folder config/routes.rb
, ubah menjadi seperti ini:
Rails.application.routes.draw do
root to: "posts#index"
end
Kemudian buka lagi controller Posts_controller.rb
dan ubah menjadi seperti berikut ini:
class PostsController < ApplicationController
def index
@posts = Post.order(:title).page params[:page]
end
end
Selanjutnya buka model post di folder app/models/post.rb
, ubah menjadi seperti berikut ini:
class Post < ApplicationRecord
paginates_per 10
end
Sekarang buka app/views/posts/index.html.erb
, kemudian masukkan kode berikut ini:
<h1>Posts</h1>
<hr />
<% @posts.each do |post| %>
<h2><%= post.title %></h2>
<p>
<%= post.body %>
</p>
<% end %>
<hr />
<%= paginate @posts %>
<%= page_entries_info @posts %>
Konfigurasi Global
Jalankan perintah berikut ini untuk menginisialisai kaminari:
rails g kaminari:config
Setelah berhasil, teman-teman akan melihat file baru di config/initializers/kaminari_config.rb
, kurang lebih kodenya seperti berikut ini:
Kaminari.configure do |config|
# config.default_per_page = 25
# config.max_per_page = nil
# config.window = 4
# config.outer_window = 0
# config.left = 0
# config.right = 0
# config.page_method_name = :page
# config.param_name = :page
end
Kaminari bisa di konfigurasi dengan I18N. untuk default kodenya seperti berikut ini:
en:
views:
pagination:
first: "« First"
last: "Last »"
previous: "‹ Prev"
next: "Next ›"
truncate: "…"
helpers:
page_entries_info:
one_page:
display_entries:
zero: "No %{entry_name} found"
one: "Displaying <b>1</b> %{entry_name}"
other: "Displaying <b>all %{count}</b> %{entry_name}"
more_pages:
display_entries: "Displaying %{entry_name} <b>%{first} - %{last}</b> of <b>%{total}</b> in total"
silahkan ganti locale file di config/locales
seperti kode diatas.
Sekarang coba jalankan aplikasi kita dengan perintah:
rails s