Controller e action
Gestire le richieste
Controller e action è una lezione Ruby Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ruby Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ruby Academy include 4 lezioni in totale.
Che cos'è un controller?
Un controller riceve una richiesta dal router, esegue il lavoro e decide cosa restituire. È il coordinatore tra modelli e viste.
- I controller si trovano in
app/controllers. - Ereditano da
ApplicationController. - Ogni metodo pubblico è un'azione.
Definire un controller
Un controller è una classe il cui nome termina con Controller. Per convenzione, ArticlesController gestisce le route per la risorsa articles.
class ArticlesController < ApplicationController
def index
@articles = Article.all
end
endLe azioni corrispondono alle route
Ognuna delle sette route REST chiama l'azione corrispondente. Il router invia GET /articles a index, GET /articles/1 a show e così via. Dare alle azioni i nomi previsti dalla convenzione mantiene tutto collegato automaticamente.
L'hash params
I dati della richiesta arrivano in params, un oggetto simile a un hash che contiene segmenti del percorso, stringhe di query e campi del modulo. Per /articles/5, params[:id] è "5".
def show
@article = Article.find(params[:id])
endVariabili di istanza e viste
I controller passano i dati alle viste tramite variabili di istanza (il prefisso @). Qualsiasi @variable impostata nell'azione è visibile nel modello di vista corrispondente.
def index
@articles = Article.all
# @articles is available in index.html.erb
endImplementare index e show
Le azioni di lettura sono semplici: index carica una raccolta, mentre show carica un record tramite l'id. Poi eseguono il rendering dei rispettivi modelli predefiniti.
class ArticlesController < ApplicationController
def index
@articles = Article.all
end
def show
@article = Article.find(params[:id])
end
endImplementare create
L'azione create costruisce un record a partire dai dati inviati e lo salva. In caso di successo reindirizza l'utente; in caso di errore visualizza nuovamente il modulo, così l'utente può correggere gli errori.
def create
@article = Article.new(article_params)
if @article.save
redirect_to @article
else
render :new, status: :unprocessable_entity
end
endredirect_to vs render
Due risposte molto diverse:
redirect_todice al browser di inviare una nuova richiesta a un altro URL.renderrestituisce direttamente una vista per la richiesta corrente.
Reindirizzi dopo una scrittura riuscita; usi il rendering per mostrare nuovamente un modulo con gli errori.
Azioni preliminari
Un before_action esegue una configurazione condivisa prima delle azioni scelte, riducendo la duplicazione. Un uso comune consiste nel caricare il record necessario per show, edit, update e destroy.
class ArticlesController < ApplicationController
before_action :set_article, only: [:show, :edit, :update, :destroy]
private
def set_article
@article = Article.find(params[:id])
end
endFiltri e autenticazione
before_action può anche applicare regole. Una protezione come before_action :require_login può eseguire redirect_to login_path e interrompere l'azione se l'utente non ha effettuato l'accesso, proteggendo interi controller in una sola volta.
before_action :require_login
private
def require_login
redirect_to login_path unless current_user
endGestire i record mancanti
Quando find non riesce a trovare un record, solleva RecordNotFound, che Rails trasforma in un 404 in produzione. Può personalizzare questo comportamento con rescue_from per mostrare una pagina più comprensibile.
rescue_from ActiveRecord::RecordNotFound do
redirect_to articles_path, alert: "Not found"
endControllo rapido
Verifichi la sua comprensione dei controller.
Riepilogo: controller e azioni
Ha imparato come i controller gestiscono le richieste:
- Le azioni corrispondono alle route secondo la convenzione.
paramstrasporta i dati della richiesta; le@variablesraggiungono la vista.createsalva e poi reindirizza o esegue nuovamente il rendering.redirect_toerenderhanno scopi diversi.before_actioncondivide la configurazione e applica l'autenticazione.
Ora manterrà sicura l'assegnazione di massa con gli strong parameters.
Domande Frequenti
La lezione «Controller e action» è gratuita?
Sì — il testo completo di «Controller e action» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ruby Academy, passa a CoddyKit PRO. Il corso Ruby Academy include 4 lezioni in totale.
Cosa imparerò in «Controller e action»?
Gestire le richieste Eserciti Ruby Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Ruby Academy?
Non è richiesta alcuna esperienza precedente. Ruby Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Controller e action»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Ruby Academy?
Sì. Ogni lezione Ruby Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Route e risorse
- Controller e action
- Strong Parameters
- Viste e rendering