Controller dan Action
Tangani permintaan.
Controller dan Action adalah pelajaran Ruby Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Ruby Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Ruby Academy mencakup 4 pelajaran total.
Apa Itu Pengontrol?
Pengontrol menerima permintaan dari perute, melakukan pekerjaan, lalu menentukan apa yang harus dikirim kembali. Pengontrol merupakan koordinator antara model dan tampilan.
- Pengontrol berada di
app/controllers. - Pengontrol mewarisi
ApplicationController. - Setiap metode publik merupakan sebuah aksi.
Mendefinisikan Pengontrol
Pengontrol adalah kelas yang diakhiri dengan Controller. Berdasarkan konvensi, ArticlesController menangani rute untuk sumber daya articles.
class ArticlesController < ApplicationController
def index
@articles = Article.all
end
endAksi Dipetakan ke Rute
Masing-masing dari tujuh rute REST memanggil aksi yang sesuai. Perute mengirim GET /articles ke index, GET /articles/1 ke show, dan seterusnya. Menamai aksi sesuai konvensi membuat semuanya terhubung secara otomatis.
Hash params
Data permintaan tiba dalam params, yaitu objek mirip hash yang berisi segmen rute, string kueri, dan bidang formulir. Untuk /articles/5, params[:id] adalah "5".
def show
@article = Article.find(params[:id])
endVariabel Instans ke Tampilan
Pengontrol meneruskan data ke tampilan melalui variabel instans (dengan awalan @). Setiap @variable yang ditetapkan dalam aksi akan terlihat di templat tampilan yang sesuai.
def index
@articles = Article.all
# @articles is available in index.html.erb
endMenerapkan index dan show
Aksi pembacaan bersifat sederhana: index memuat sebuah koleksi, sedangkan show memuat satu rekaman berdasarkan id. Setelah itu, keduanya merender templat bawaannya.
class ArticlesController < ApplicationController
def index
@articles = Article.all
end
def show
@article = Article.find(params[:id])
end
endMenerapkan create
Aksi create membangun sebuah rekaman dari data yang dikirimkan lalu menyimpannya. Jika berhasil, aksi tersebut mengalihkan halaman; jika gagal, formulir dirender kembali agar pengguna dapat memperbaiki kesalahan.
def create
@article = Article.new(article_params)
if @article.save
redirect_to @article
else
render :new, status: :unprocessable_entity
end
endredirect_to vs render
Dua respons yang sangat berbeda:
redirect_tomemberi tahu peramban untuk membuat permintaan baru ke URL lain.rendermengembalikan tampilan secara langsung untuk permintaan saat ini.
Alihkan halaman setelah penulisan berhasil; render formulir kembali untuk menampilkan formulir beserta kesalahannya.
Aksi Sebelum
before_action menjalankan persiapan bersama sebelum aksi yang dipilih, sehingga mengurangi pengulangan. Penggunaan yang umum adalah memuat rekaman yang diperlukan oleh show, edit, update, dan destroy.
class ArticlesController < ApplicationController
before_action :set_article, only: [:show, :edit, :update, :destroy]
private
def set_article
@article = Article.find(params[:id])
end
endPenyaring dan Autentikasi
before_action juga menegakkan aturan. Penjaga seperti before_action :require_login dapat melakukan redirect_to login_path dan menghentikan aksi jika pengguna belum masuk, sehingga seluruh pengontrol dapat dilindungi sekaligus.
before_action :require_login
private
def require_login
redirect_to login_path unless current_user
endMenangani Rekaman yang Hilang
Ketika find tidak dapat menemukan rekaman, metode tersebut menimbulkan RecordNotFound, yang diubah Rails menjadi 404 di lingkungan produksi. Anda dapat menyesuaikannya dengan rescue_from untuk menampilkan halaman yang mudah dipahami.
rescue_from ActiveRecord::RecordNotFound do
redirect_to articles_path, alert: "Not found"
endUji Singkat
Uji pemahaman Anda tentang pengontrol.
Ringkasan: Pengontrol dan Aksi
Anda telah mempelajari cara pengontrol menangani permintaan:
- Aksi dipetakan ke rute berdasarkan konvensi.
paramsmembawa data permintaan;@variablesmencapai tampilan.createmenyimpan lalu mengalihkan halaman atau merender ulang.redirect_todanrendermemiliki tujuan yang berbeda.before_actionmembagikan persiapan dan menegakkan autentikasi.
Selanjutnya, kita akan menjaga keamanan penugasan massal dengan parameter kuat.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Controller dan Action” gratis?
Ya — teks lengkap “Controller dan Action” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Ruby Academy, upgrade ke CoddyKit PRO. Kursus Ruby Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Controller dan Action”?
Tangani permintaan. Kamu berlatih Ruby Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Ruby Academy?
Tidak diperlukan pengalaman sebelumnya. Ruby Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Controller dan Action” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Ruby Academy ini?
Ya. Setiap pelajaran Ruby Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Rute dan Sumber Daya
- Controller dan Action
- Parameter Kuat
- View dan Rendering