0Pricing
Ruby Academy · Lección

Controladores y acciones

Gestione solicitudes

Controladores y acciones es una lección gratuita de Ruby Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ruby Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ruby Academy incluye 4 lecciones en total.

¿Qué es un controlador?

Un controlador recibe una solicitud del enrutador, realiza el trabajo y decide qué enviar de vuelta. Es el coordinador entre los modelos y las vistas.

  • Los controladores se encuentran en app/controllers.
  • Heredan de ApplicationController.
  • Cada método público es una acción.

Definir un controlador

Un controlador es una clase cuyo nombre termina en Controller. Por convención, ArticlesController gestiona las rutas del recurso articles.

class ArticlesController < ApplicationController
  def index
    @articles = Article.all
  end
end

Las acciones se asignan a las rutas

Cada una de las siete rutas REST llama a una acción correspondiente. El enrutador envía GET /articles a index, GET /articles/1 a show, y así sucesivamente. Nombrar las acciones según la convención mantiene todo conectado automáticamente.

El hash params

Los datos de la solicitud llegan en params, un objeto similar a un hash que contiene segmentos de la ruta, cadenas de consulta y campos de formulario. Para /articles/5, params[:id] es "5".

def show
  @article = Article.find(params[:id])
end

Variables de instancia para las vistas

Los controladores pasan datos a las vistas mediante variables de instancia (el prefijo @). Cualquier @variable que establezca en la acción estará disponible en la plantilla de vista correspondiente.

def index
  @articles = Article.all
  # @articles is available in index.html.erb
end

Implementar index y show

Las acciones de lectura son sencillas: index carga una colección y show carga un registro por su id. Después, renderizan sus plantillas predeterminadas.

class ArticlesController < ApplicationController
  def index
    @articles = Article.all
  end

  def show
    @article = Article.find(params[:id])
  end
end

Implementar create

La acción create construye un registro a partir de los datos enviados y lo guarda. Si tiene éxito, redirige; si falla, vuelve a renderizar el formulario para que el usuario pueda corregir los errores.

def create
  @article = Article.new(article_params)
  if @article.save
    redirect_to @article
  else
    render :new, status: :unprocessable_entity
  end
end

redirect_to frente a render

Dos respuestas muy diferentes:

  • redirect_to indica al navegador que realice una nueva solicitud a otra URL.
  • render devuelve directamente una vista para la solicitud actual.

Redirija después de una escritura correcta y renderice para volver a mostrar un formulario con errores.

Acciones previas

Una before_action ejecuta una configuración compartida antes de las acciones elegidas, lo que reduce la duplicación. Un uso habitual es cargar el registro que necesitan show, edit, update y destroy.

class ArticlesController < ApplicationController
  before_action :set_article, only: [:show, :edit, :update, :destroy]

  private

  def set_article
    @article = Article.find(params[:id])
  end
end

Filtros y autenticación

before_action también permite aplicar reglas. Un filtro como before_action :require_login puede ejecutar redirect_to login_path y detener la acción si el usuario no ha iniciado sesión, protegiendo controladores completos de una vez.

before_action :require_login

private

def require_login
  redirect_to login_path unless current_user
end

Gestionar registros inexistentes

Cuando find no puede localizar un registro, genera RecordNotFound, que Rails convierte en un error 404 en producción. Puede personalizar este comportamiento con rescue_from para mostrar una página amigable.

rescue_from ActiveRecord::RecordNotFound do
  redirect_to articles_path, alert: "Not found"
end

Comprobación rápida

Compruebe cuánto entiende sobre los controladores.

Repaso: controladores y acciones

Ha aprendido cómo los controladores gestionan las solicitudes:

  • Las acciones se asignan a las rutas por convención.
  • params transporta los datos de la solicitud; @variables llegan a la vista.
  • create guarda y después redirige o vuelve a renderizar.
  • redirect_to y render tienen propósitos diferentes.
  • before_action comparte la configuración y aplica la autenticación.

A continuación, mantendremos segura la asignación masiva mediante parámetros fuertes.

Preguntas frecuentes

¿La lección «Controladores y acciones» es gratis?

Sí — el texto completo de «Controladores y acciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ruby Academy, actualiza a CoddyKit PRO. El curso de Ruby Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Controladores y acciones»?

Gestione solicitudes Practicas Ruby Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Ruby Academy?

No se requiere experiencia previa. Ruby Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Controladores y acciones»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Ruby Academy?

Sí. Cada lección de Ruby Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Rutas y recursos
  2. Controladores y acciones
  3. Parámetros seguros
  4. Vistas y renderizado
← Volver a Ruby Academy