Guías de Make it Real
  • Introduction
  • Preparación
    • Conceptos básicos
    • El editor de texto
    • La línea de comandos
    • Git y Github
  • Git
    • Instalación y configuración
    • Conceptos y comandos esenciales
    • Ignorando archivos y carpetas
    • Trabajando con ramas
    • Repositorios remotos
    • Etiquetas
    • Reescribiendo la historia
    • Stashing
    • Github
  • HTML y CSS
    • Introducción a HTML
    • Introducción a CSS
    • Más elementos de HTML
    • Tablas
    • Formularios
    • El modelo de caja en CSS
    • Fondos (backgrounds)
    • Posicionamiento
    • Selectores CSS
    • Bordes, sombras y gradientes
    • Media Queries
    • Unidades en CSS
    • Flexbox
  • Bootstrap 3
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Personalizando Bootstrap
    • Utilizando plantillas
  • Bootstrap 4
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Clases utilitarias
    • Personalizando Bootstrap
  • Ruby
    • Primeros pasos
    • Tipos y operadores
    • Variables y entrada de usuario
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Hashes
    • Métodos
    • Manipulación de archivos
    • Gemas
  • Programación Orientada a Objetos en Ruby
    • Clases y objetos
    • Métodos y atributos de clase
    • Herencia
    • Módulos
    • Excepciones
  • JavaScript I
    • Primeros pasos
    • Tipos y operadores
    • Variables
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Funciones
    • Objetos literales
    • Manipulación de archivos
  • JavaScript en el navegador
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Local Storage
    • History API
    • Canvas
    • Notificaciones Web
    • Audio y Video
    • Arrastrar y soltar
    • JSON
    • Realizando peticiones HTTP
  • jQuery
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Plugins
    • Realizando peticiones con AJAX
  • JavaScript II
    • Prototipos
    • Librerías (Node.js)
    • ES6
    • Uso de this (call, apply, bind)
    • Programación funcional
    • Scope, hoisting, closures
    • Programación asincrónica
    • Testing
  • HTTP y Sinatra
    • Primeros pasos con Sinatra
    • El protocolo HTTP
    • Rutas
    • Formularios
    • Cookies y sesión
  • Bases de datos
    • Bases de datos relacionales
    • SQL
    • DDL
    • MongoDB
  • Ruby on Rails I
    • Primeros pasos
    • Arquitectura
    • Rutas
    • Layouts y rendering
    • ActiveRecord - Modelos
    • ActiveRecord - Migraciones
    • ActiveRecord - Validaciones
    • ActiveRecord - Asociaciones
    • ActiveRecord - Scopes
    • ActiveRecord - Callbacks
    • Recursos REST
    • Formularios
    • Autenticación con Devise
    • Sass y Bootstrap
    • Envío de correos
    • Carga de imágenes
    • Seeds
    • Heroku
  • Ruby on Rails II
    • Usando JavaScript (y jQuery) en Rails
    • Testing en Ruby
    • Testing en Rails
    • Creando una Web API
    • Web Sockets
  • Express.js
    • Primeros Pasos
    • El protocolo HTTP
    • Rutas
    • Vistas
    • Middlewares y manejo de errores
    • Formularios
    • Cookies y sesión
  • Express.js II
    • Mongoose
    • Web Sockets
    • Autenticación
    • Envío de correos
    • Cargar imágenes
    • Deployment
    • Testing
    • Creando una Web API
  • React
    • Primeros pasos
    • JSX
    • Componentes
    • Más sobre estado
    • Formularios
    • Peticiones HTTP con Axios
    • React Hooks
    • React Context
    • React Bootstrap
    • React Router
    • Carga de Imágenes
    • Testing
    • Estructura de carpetas
    • Componentes de clase
  • Redux
    • Primeros pasos
    • Action creators
    • Usando la librería react-redux
    • Middlewares
    • Operaciones asincrónicas con redux-thunk
    • Combinando funciones reductoras
    • Testing
    • Redux Tool Kit
  • Algoritmos
    • Describiendo un algoritmo
    • Complejidad (Big-O)
    • Estructuras de datos
    • Recursión
    • Ordenamiento
    • Búsqueda
    • Programación dinámica
  • Python
    • Primeros Pasos
    • Tipos y Variables
    • Funciones
    • Control de Flujo
    • Listas
    • Ciclos
    • Diccionarios, Tuplas y Sets
  • NumPy
    • Primeros Pasos
    • Arreglos
    • Arreglos Multidimensionales
    • Estadística con NumPy
    • Distribución Estadística
  • Pandas
    • Primeros Pasos
    • Inspección y Selección de Datos
    • Modificando Dataframes
    • La Función Lambda
    • Aggregates en Pandas
    • Múltiples Tablas
Powered by GitBook
On this page
  • Cambiando el layout
  • 1. Creando un layout que se llame igual al controlador
  • 2. Cambiando el layout en el controlador
  • 3. Cambiando el layout en una acción
  • Renderizando y redireccionando
  • 1. Utilizando render
  • 2. Utilizando redirect_to para redireccionar
  1. Ruby on Rails I

Layouts y rendering

Por defecto todas las vistas utilizan el layout ubicado en app/views/layouts/application.html.erb.

Dentro de ese archivo application.html.erb vas a encontrar la palabra yield. En esa línea es la que se reemplaza por el contenido de cada vista.

Cambiando el layout

Existen varias formas de cambiar el layout que se va a utilizar al renderizar una vista:

1. Creando un layout que se llame igual al controlador

Por defecto Rails busca un archivo en app/views/layouts que se llame igual al controlador.

Por ejemplo, si el controlador es pages_controller.rb, Rails busca el archivo app/views/layouts/pages.html.erb y utiliza ese archivo como layout para todas las acciones de ese controlador.

De lo contrario utiliza application.html.erb.

2. Cambiando el layout en el controlador

Puedes definir el layout que van a utilizar todas las acciones de un controlador de la siguiente forma:

class PagesController < ApplicationController
  layout "mi_layout"

  ...
end

La línea layout "mi_layout" le está diciendo a Rails que utilice el archivo app/views/layouts/mi_layout.html.erb como layout de todas las acciones de ese controlador.

Puedes agregar condiciones para que el layout solo aplique a algunas acciones o excluya otras. Por ejemplo, con la siguiente línea el layout mi_layout.html.erb sólo va a aplicar a las acciones index y new del controlador.

layout "mi_layout", only: [:index, :new]

También puedes excluir acciones. La siguiente línea utilizará el layout mi_layout.html.erb para todas las acciones exceptuando index:

layout "mi_layout", except: [:index]

Puedes evitar que las acciones de un controlador utilicen un layout con la siguiente línea:

layout false

3. Cambiando el layout en una acción

También es posible cambiar el layout de una acción particular utilizando render (del que vamos a hablar en detalle más adelante):

class PagesController < ApplicationController
  def index
    render layout: "mi_layout"
  end
end

Cuando se llame esta acción se va a utilizar el layout app/views/layouts/mi_layout.html.erb para renderizar la vista app/views/pages/index.html.erb.

Para evitar que se utilice un layout para renderizar la vista utilizarías:

class PagesController < ApplicationController
  def index
    render layout: false
  end
end

Renderizando y redireccionando

Por defecto, cuando se ejecuta la acción de un controlador, Rails renderiza una vista que se llame igual a la acción (al método) y se encuentre en una carpeta que se llame igual al controlador dentro de app/views.

Por ejemplo, cuando se ejecute la acción index del controlador pages_controller.rb por defecto se va a intentar renderizar la vista app/views/pages/index.html.erb.

Puedes cambiar ese comportamiento de varias formas:

1. Utilizando render

El método render lo utilizamos antes para cambiar el layout. Sin embargo, también lo puedes utilizar para renderizar HTML o una vista diferente.

Para renderizar HTML:

class PagesController < ApplicationController
  def index
    render html: "<h1>Hola Mundo</h1>"
  end
end

Para renderizar una vista diferente:

class PagesController < ApplicationController
  def index
    render "mi_vista" # también funciona: render :mi_vista
  end
end

En este caso, en vez de intentar renderizar app/views/pages/index.html.erb se va a renderizar app/views/pages/mi_vista.html.erb.

Si la vista se encuentra en otra carpeta puedes utilizar:

render "products/index" # renderiza app/views/products/index.html.erb

Por defecto Rails utiliza el código de respuesta 200 OK pero puedes cambiarlo con la opción status:

render status: 200
# render status: :ok

2. Utilizando redirect_to para redireccionar

Para redireccionar a otra ruta de tu aplicación o a un sitio externo utiliza el método redirect_to. Por ejemplo, la siguiente línea redireccionaría al usuario a /products:

redirect_to products_path

Para redireccionar a un sitio externo simplemente utiliza la URL del sitio de la siguiente forma:

redirect_to "http://www.google.com/"
PreviousRutasNextActiveRecord - Modelos

Last updated 2 years ago

Cada código tiene su símbolo correspondiente, puedes encontrar la lista completa en .

este enlace