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
endLas 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])
endVariables 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
endImplementar 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
endImplementar 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
endredirect_to frente a render
Dos respuestas muy diferentes:
redirect_toindica al navegador que realice una nueva solicitud a otra URL.renderdevuelve 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
endFiltros 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
endGestionar 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"
endComprobació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.
paramstransporta los datos de la solicitud;@variablesllegan a la vista.createguarda y después redirige o vuelve a renderizar.redirect_toyrendertienen propósitos diferentes.before_actioncomparte 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
- Rutas y recursos
- Controladores y acciones
- Parámetros seguros
- Vistas y renderizado