0Pricing
Ruby Academy · Pelajaran

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
end

Aksi 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])
end

Variabel 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
end

Menerapkan 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
end

Menerapkan 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
end

redirect_to vs render

Dua respons yang sangat berbeda:

  • redirect_to memberi tahu peramban untuk membuat permintaan baru ke URL lain.
  • render mengembalikan 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
end

Penyaring 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
end

Menangani 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"
end

Uji Singkat

Uji pemahaman Anda tentang pengontrol.

Ringkasan: Pengontrol dan Aksi

Anda telah mempelajari cara pengontrol menangani permintaan:

  • Aksi dipetakan ke rute berdasarkan konvensi.
  • params membawa data permintaan; @variables mencapai tampilan.
  • create menyimpan lalu mengalihkan halaman atau merender ulang.
  • redirect_to dan render memiliki tujuan yang berbeda.
  • before_action membagikan 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

  1. Rute dan Sumber Daya
  2. Controller dan Action
  3. Parameter Kuat
  4. View dan Rendering
← Kembali ke Ruby Academy