Un recurso es un elemento que podemos realizarle un CRUD*.
* ¿Qué es un CRUD?
Create, Read, Update, Destroy
Crear, Leer, Actualizar y Borrar
En Rails las operaciones CRUD se hacen con la ayuda de los modelos, las vistas y los controladores.
Podemos generar cada uno de ellos manualmente o utilizar scaffolds (automáticamente).
Crear un Recurso con scaffolds
1.-
ruby bin/rails generate scaffold Nombrerecurso atributodelrecurso:tipodedato
Por ejemplo –> ruby bin/rails generate scaffold Coche kilometros:integer
2-. Ejecutamos las migraciones pendientes, o sea, crea la tabla cursos.
ruby bin/rails db:migrate
3.- Levantamos el servidor
ruby bin/rails server
4.- Y vamos al navegador con la ruta del recurso creado, por ejemplo –> localhost:3000/courses
5.- Si apretamos en New Course, podremos crearlo con los atributos declarados, en este caso solo con el title
6.- Ya una vez creado, vamos nuevamente a –>/courses , y vemos que esta el elemento nuevo en la lista de cursos
CONTROLADOR
Detectan y recibir las peticiones d elos usuarios y contactar con los modelos correspondientes.
Al hacer la peticion al servidor nos dice, que a recibido una peticion GET a /courses
Renderizando courses/index.html.erb con el layout application
Hace la consulta para devolver todos los cursos
Y renderiza todo
Dentro del courses controller este es el que se crea por default:
Por defecto se renderiza la vista que tiene el nombre igual a nuestro controlador.
El layout por defecto es el application.html
Pero podemos especificar que template y layout queremos especifico de esta manera:
MODELO
CRUD de la informacio nque nos piden.
Los modelos representan nuestra casi siempre tablas de la BBDD. Nos ayudan a interactuar con nuestras tablas de las BBDD, para no escribir nuestras querys.
En el caso de course vemos el modelo creado hereda de ApplicationRecord y este a su vez hereda de ActiveRecord.
En ActiveRecord se encuentran declarados todos los metodos como all, new,save…
VISTAS
Archivos HTML que pueden incluir expresiones de ruby embebidos. Se encuentran en app/views. Normalmente cada modelo va a tener una carpeta de vistas con varias vistas para un solo modelo (una para agregar información, otra para editar información…)
A su vez layouts/application.html.erb contiene la estructura basica html con un yield en el body en el cual se incrusta las vistas anteriores.