0Pricing
Ruby Academy · Lezione

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
end

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

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

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

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

redirect_to vs render

Due risposte molto diverse:

  • redirect_to dice al browser di inviare una nuova richiesta a un altro URL.
  • render restituisce 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
end

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

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

Controllo 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.
  • params trasporta i dati della richiesta; le @variables raggiungono la vista.
  • create salva e poi reindirizza o esegue nuovamente il rendering.
  • redirect_to e render hanno scopi diversi.
  • before_action condivide 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

  1. Route e risorse
  2. Controller e action
  3. Strong Parameters
  4. Viste e rendering
← Torna a Ruby Academy