Bagaimana caranya agar URL lebih humanis (Ruby on Rails - FriendlyId)

Bagaimana ya caranya biar url kita lebih terlihat cantik, daripada punya url kaya gini:
http://contoh.com/post/54321
Kan lebih enak kalo kaya gini :
http://contoh.com/post/cara-url-lebih-humanis
Jadi lebih terlihat friendly dan enak dilihat. Nah ada plugin slug untuk Active Record Rails namanya FriendlyId. Membantu kita membuat URL cantik sob. Bisa dibaca buat penjelasannya disini FriendlyId Github .

Langkah menerapkannya sama seperti instalasi gem lain.
Di gemfile
gem 'friendly_id', '~> 5.2.4'
Lalu eksekusi di terminal (ctrl+alt+t) (saya pake linux) kalo di windows ya di cmd
bundle install
masih di terminal eksekusi ini
rails generate friendly_id
Disini saya mau membuat crud dari Post jadi pake generate scaffold agar otomatis dibuatkan MVC nya sekalian.
rails g scaffold post title:string body:text description:text slug:string:uniq
Jangan lupa kita migrate
rails db:migrate
Lalu buka file app/model/post.rb. Dan tambahkan kode ini
class Post < ApplicationRecord
 extend FriendlyId
 friendly_id :title, use: :slugged

 def should_generate_new_friendly_id?
  title_changed?
 end
end
dan app/controllers/posts_controller.rb
class PostsController < ApplicationController
  private
    # Use callbacks to share common setup or constraints between actions.
    def set_post
      @post = Post.friendly.find(params[:id])
    end
app/config/routes.rb
Rails.application.routes.draw do
  root to: 'posts#index'
  resources :posts
end
lalu kita running server, buka terminal lagi
rails s
Lalu kita buka browser dan kita inputkan post title, body dan description (slug biarkan kosong)

Dan otomatis url sesuai dengan title kita.


Terlihat humanis kan


Itulah cara agar url kita terlihat lebih friendly.

Bonus :
Ubah title app jadi ada title post sesuai page yang dibuka.
app/views/layouts/application.html.erb
<title><%= yield(:page_title) %> | Post </title>
app/views/posts/show.html.erb
<% provide(:page_title, @post.title) %>

Referensi :

Posting Komentar

0 Komentar