Membuat Pagination di Ruby on Rails Dengan Gem Kaminari
Software Engineering Enthusiast | Blogger | Creator of RubyPedia.com
27 Mei 2018

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

Blog ini telah dibaca sebanyak 350 kali
Rails Ruby on Rails Pagination Kaminari Gem Kaminari

Sekilas Tentang Penulis

Fika Ridaul Maulayya
Software Engineering Enthusiast | Blogger | Creator of RubyPedia.com

KOMENTAR

blog comments powered by Disqus