Routing di Ruby on Rails sering jadi sumber kebingungan pertama saat bikin aplikasi. Kamu sudah bikin controller dan view, tapi halaman yang diakses malah 404. Penyebabnya biasanya bukan kode Ruby-nya, melainkan route yang belum terdaftar atau salah susun. Lewat tips memahami routing Ruby on Rails untuk pemula ini, kamu akan belajar cara membaca, menulis, dan mengatur route tanpa harus menghafal semuanya.
Kenali file config/routes.rb
Semua route di Rails bermuara di satu file: config/routes.rb. Di sinilah kamu mendefinisikan URL mana yang memanggil controller dan action apa. Format dasarnya sederhana:
get '/halo', to: 'welcome#index'
Baris di atas berarti permintaan GET ke /halo akan diarahkan ke WelcomeController#index. Setelah menambah route, restart server kalau perlu, lalu cek dengan perintah rails routes di terminal. Perintah ini menampilkan daftar route beserta prefix, verb, URI pattern, dan controller#action. Biasakan melihat output ini setiap kali ada error 404.
Gunakan resource untuk CRUD
Kalau kamu membuat fitur CRUD (Create, Read, Update, Delete) untuk satu model, Rails sudah menyediakan cara ringkas lewat resources:
resources :articles
Satu baris itu menghasilkan tujuh route standar: index, show, new, create, edit, update, dan destroy. Kamu tidak perlu menulis satu per satu. Untuk pemula, ini cara tercepat memahami pola routing yang idiomatik. Kalau ingin melihat bagaimana CRUD bekerja dari sisi model dan database, baca panduan Memahami Active Record di Ruby on Rails yang membahas interaksi model dengan tabel.
Bedakan route statis dan dinamis
Route statis seperti get '/about', to: 'pages#about' selalu menuju halaman yang sama. Route dinamis memakai segmen di URL, misalnya get '/articles/:id', to: 'articles#show'. Tanda :id akan tersedia di params[:id] dalam controller. Pahami perbedaan ini karena banyak error terjadi ketika kamu menaruh route dinamis di atas route statis yang seharusnya lebih spesifik. Urutan route di routes.rb berpengaruh: route yang dideklarasikan lebih dulu akan dicek lebih dulu.
Manfaatkan named route
Setiap route bisa diberi nama dengan opsi as:, misalnya get '/about', to: 'pages#about', as: :about. Nama ini memungkinkanmu memanggil about_path atau about_url di view dan controller. Keuntungannya, kalau nanti URL berubah, kamu hanya perlu mengubah satu tempat. Named route juga membuat kode lebih mudah dibaca daripada menulis string path secara manual.
Atur nested route dengan hati-hati
Nested route berguna ketika ada relasi antar model, misalnya artikel punya banyak komentar. Kamu bisa menulis:
resources :articles do
resources :comments
end
Ini menghasilkan URL seperti /articles/1/comments. Tapi jangan terlalu dalam membuat nesting. Praktik yang umum adalah membatasi kedalaman maksimal satu atau dua level. Untuk komentar, seringkali lebih baik menggunakan shallow: true agar route edit dan show tidak ikut bersarang. Baca juga Tips Mengelola Database di Ruby on Rails untuk Pemula supaya relasi antar tabel tidak bikin bingung saat menyusun route.
Batasi route yang tidak perlu
Tidak semua action perlu diekspos sebagai route. Gunakan opsi only atau except:
resources :articles, only: [:index, :show]
Membatasi route membuat aplikasi lebih aman dan mudah dipahami. Pemula sering mendeklarasikan semua route padahal belum tentu dipakai. Mulailah dari yang benar-benar dibutuhkan, lalu tambah saat perlu.
Debugging route yang error
Kalau muncul error No route matches, periksa tiga hal: apakah route sudah dideklarasikan, apakah HTTP verb sudah sesuai (GET, POST, PATCH, DELETE), dan apakah urutan route sudah benar. Gunakan rails routes | grep nama_route untuk mencari route tertentu. Untuk masalah yang lebih rumit, teknik debugging di Rails bisa dipelajari di 7 Alasan Developer Ruby on Rails Wajib Kuasai Debugging.
Jika kamu bekerja dengan JavaScript dan AJAX, kesalahan routing kadang tampak seperti data yang tidak muncul. Sebagai contoh, mengapa array PHP kadang tidak muncul di JavaScript sering disebabkan oleh endpoint yang salah. Di Rails, pastikan route untuk AJAX mengembalikan format yang tepat, misalnya JSON. Panduan menampilkan data dari AJAX jQuery ke tabel HTML bisa membantu memahami alur request-response yang benar.
Selain itu, kalau kamu butuh hiburan ringan sambil mengerjakan proyek, ada baiknya mampir ke tarkamlive. Situs ini menyediakan siaran olahraga seperti basket, sepakbola, dan UFC yang bisa ditonton bareng hosts yang menghibur. Cocok untuk melepas penat setelah berjam-jam berhadapan dengan error routing.
Ringkasan
Memahami routing Ruby on Rails tidak perlu langsung menghafal semua sintaks. Mulai dari file routes.rb, gunakan resources untuk CRUD, beri nama route, dan batasi nested route. Selalu cek dengan rails routes dan urutan deklarasi. Dengan latihan rutin, routing akan terasa alami seperti menulis kode Ruby biasa.
Pertanyaan yang Sering Diajukan
Apa perbedaan resources dan resource di Rails?
resources (jamak) digunakan untuk resource yang punya banyak instance, seperti articles, sehingga menghasilkan route dengan ID. resource (tunggal) untuk resource tunggal seperti profil pengguna, dan route-nya tidak memakai ID.
Mengapa route saya selalu 404 padahal sudah dideklarasikan?
Periksa HTTP verb dan urutan route. Route dengan pola dinamis mungkin menangkap request sebelum route statis yang kamu tuju. Coba jalankan rails routes dan pastikan tidak ada route lain yang lebih dulu cocok.
Apakah perlu menulis route manual untuk setiap action?
Tidak. Gunakan resources dengan opsi only atau except untuk membatasi action yang diekspos. Menulis manual hanya jika kamu butuh URL yang sangat spesifik di luar konvensi REST.
