Thumbnail Tutorial Memakai Kaminari di Ruby on Rails

Tutorial Memakai Kaminari di Ruby on Rails

Apa Itu Kaminari?

Kaminari adalah sebuah gem Ruby untuk melakukan pagination pada ActiveRecord, Mongoid, dan berbagai ORM lainnya. Pagination adalah fitur penting dalam aplikasi web untuk menampilkan data dalam jumlah besar secara efisien, kamu bisa dengan mudah membatasi jumlah item yang ditampilkan di satu halaman, serta menyediakan navigasi untuk pindah ke halaman-halaman berikutnya.

Berikut ini cara memakai Gem Kaminari di Ruby on rails.

1. Instalasi

Tambahkan Kaminari ke file Gemfile:

gem 'kaminari'

Kemudian jalankan perintah:

bundle install

2. Setup Pagination di Controller

Misalkan kamu punya model Post, dan ingin menampilkan daftar postingan yang dipaginasi.

Di posts_controller.rb, ubah action index seperti berikut:

def index
  @posts = Post.order(created_at: :desc).page(params[:page]).per(10)
end

page(params[:page]) Menentukan halaman saat ini berdasarkan parameter URL ?page=

3. Tampilkan Pagination di View

Di file app/views/posts/index.html.erb, tambahkan kode berikut setelah daftar item:

<% @posts.each do |post| %>
  <div class="post">
    <h2><%= post.title %></h2>
    <p><%= truncate(post.content, length: 100) %></p>
  </div>
<% end %>

<%= paginate @posts %>

4. Kustomisasi Tampilan Paginasi

Kaminari menyediakan generator untuk membuat file partial yang bisa kamu modifikasi:

rails g kaminari:views default

Ini akan menghasilkan file-file ERB di app/views/kaminari/. Kamu bisa mengedit tampilan tombol pagination sesuai selera, atau menambahkan class Tailwind, Bulma, Bootstrap, dsb.

Contoh kustomisasi tombol:

<li class="page-item <%= 'active' if current_page? %>">
  <%= link_to page, url, class: "page-link" %>
</li>

5. Contoh URL Paginasi

Setelah setup di atas, kamu bisa membuka URL seperti:

http://localhost:3000/posts?page=2

Dan Rails akan menampilkan halaman ke-2 dari daftar Post

Dengan gem Kaminari, proses pagination di aplikasi Rails menjadi sangat mudah dan fleksibel. Kamu bisa menggunakannya di berbagai model, mengkustom tampilan, serta menggabungkannya dengan AJAX atau infinite scrolling untuk pengalaman pengguna yang lebih modern.

Semoga tutorial ini bermanfaat! Jika ada pertanyaan atau saran, silakan tinggalkan komentar di bawah.