Professional Documents
Culture Documents
Est
diseado para hacer que la programacin de aplicaciones web sea ms fcil, haciendo supuestos sobre lo
que cada desarrollador necesita para comenzar. Te permite escribir menos cdigo realizando ms que
muchos otros lenguajes y frameworks. Adems, expertos desarrolladores en Rails reportan que hace que el
desarrollo de aplicaciones web sea ms divertido. ste asume que existe una forma "mejor" de hacer las
cosas.
La filosofa de Rails se basa en estos dos principios:
DRY (del ingls, "Don't Repeat Yourself") - sugiere que escribir el mismo cdigo una y otra vez es una mala
prctica.
"Convencin sobre Configuracin" - significa que Rails hace algunas suposiciones sobre lo que quieres
hacer y cmo vas a hacerlo, en lugar de requerir que especifiques cada pequea cosa a travs de un sin fin
de archivos de configuracin.
-Manera sencilla, agil, marco de trabajo.
Porque escoger ruby on rails?
-Framework probado, usa MVC, ActiveRecord,
Promueve buenas practicas de desarrollo,
Usa MVC
-Modelo:Formado por clases, cada clase es un modelo y cada modelo representa una tabla en la base de
datos.(Estructuras de datos, Conexiones, Extraer datos de la BD, mandar al control para que lo pase a vista.).
-Vista: Representacin final de una peticin, (Solo codigo HTML).
-Controlador: Se encarga de la logica de la peticin, es el puente entre el modelo y la vista, Es una clase con
metodos y por cada uno de estos metodos, hay una vista.
.erb: es la extencion de las vistas
.rb: es la extencion de los controladores.
ActiveRecord
No hay que preocuparse de la BD y las querys, ya que hay una sola sintaxys. Esto acelera la productividad.
Primer aplicacion->rails new Ejemplo #Crea diferentes archivos, instala las gemas que necesitar
>cd Ejemplo
#Creara una serie de carpetas y archivos.
- app/ Contiene los controllers, models, views, helpers, mailers y assets para tu aplicacin.
- config/ Configura las reglas de ejecucin de la aplicacin, rutas, base de datos y ms.
config.ru
Configuracin Rack para servidores basados en Rack usados para iniciar la aplicacin.
db/
Contiene el esquema actual de tu base de datos, as como las migraciones de la base de datos.
doc/
Documentacin detallada de tu aplicacin.
Gemfile Gemfile.lock
Estos archivos te permiten especificar qu dependencias de gemas son
necesitadas para tu aplicacin Rails.
lib/
Mdulos extendidos para tu aplicacin.
log/
Archivos de Log de tu aplicacin.
public/ La nica carpeta vista por el mundo tal como es. Contiene los archivos estticos y assets compilados.
Rakefile Este archivo localiza y carga tareas que pueden ser ejecutadas desde la lnea de comandos. La lista
de tareas son definidas a travs de los componentes de Rails. En vez de cambiar el Rakefile, deberas
agregar tus propias tareas, aadiendo archivos al directorio lib/tasks de tu aplicacin.
README.rdoc Este es un breve manual de instrucciones para tu aplicacin. Deberas editar este archivo
para comunicar a otros lo que tu aplicacin hace, cmo configurala y dems.
script/ Contiene el script de Rails que inicia tu aplicacin y contiene otros scripts usados para correr tu
aplicacin.
test/
Pruebas unitarias, fixtures y otras pruebas. stos son cubiertos en Testing Rails Applications.
tmp/
Archivos temporales (como archivos de cach, PID y archivos de sesiones).
vendor/ Lugar para cdigo de terceros. En una tpica aplicacin Rails, sta incluye libreras y plugins.
--Crear tu propia vista-> rails generate controller welcome index # generador de controladores, con un metodo llamado index,
#Aplication controller agregas todos los metodos comunes a los controladores
Genera un view, llamado index
index_html.erb
<h1>Bienvenidos a nuestro blog</h1>
Hay que descomentar el #welcome#index de routes.rb
>rails server #arranca un servidor que trae el framework, permite visualizar nuestro proyecto en localhost:3000
--ERB y Assets--ERB: es ruby dentro de la vista, limitado, no es el lugar de colocar mucha logica, si no para desplegar datos
-Etiquetas para desplegar condigo de ruby.
<%%>: evalua o analiza el codigo, pero no lo imprime
<%= %>: Muestra contenido.
<%= yield %>: Cargar el controlador en la vista
--Flexbox Grid-- #Para los css.
--Assets-Imagenes, css, javascript,
aplication.css, require_tree. #Aade todas las hojas de stilo que encuentre en la carpeta y ya se pueden
utilizar.
Tambien funciona con los js.
--Hojas de Estilo-El welcome.css.scss, la extencion es por que si vemos en el gemfile, hay una extencion sass que es
unpreporcesador de css, que permite anidar el codigo css.
Enlaza las hojas de estilo atravez de un helpper metod.
Si lo ve en modo de desarrollo enlaza el welcome y el aplication
--Layouts-Si ya escribimos una cosa no hay por que escribirla despues. Hay que agrupar lo que tiene contenido en
comun
Cualquier pagina tiene
Head
Body
Doctype
En lugar de ponerlo vista por vista, se crea un layout que esta referenciado por <%= yield%>:
index.html.erb: vemos que no solo se compone del h1, si no que hay mucho codigo agrupado, porque el
framework trabaja con layoyts, aplication.html.erb, genera eso, agrupa lo que tiene contendio en comun,
--Modelos--
Editar
Nuevo
Eliminar
HTTP solo trabaja con GET POST:las demas se ejecutan usando js
Exelente cuando hay que entregar algo rapido
Pero hay que hacerlo desde 0 paraentender lo que esta pasando
Metodo index: se ejecuta cuando accedemos a la ruta del controlador, lo que hace es almacenar en una
variable articles todoslos artciculos a tarvez del active record
respond_to: envia el corrspondiente tipo dependiendo de lo que quiera el usuario,
La pasa al formato requerido, en este caso analizar el index
show: busca dentro delos parametros el correspondiente elemento
notice nos dice que fue lo que paso con el articulo
new: Carga el formulario, si ves la vista hay un form que tiene un parcial
en el form esta lo que realmente sucede, maneja errores cuando se cosntruyan las validaciones, por ejemplo
que el titulo sea obligatorio, se colocan en error_explanation
Edit: Encuentra el coreespondiente articulo y modificar un existente, utiliza el mismo parcial
create: retoma el trabajo que no termina new: genera uno nuevo a tarves de los parametros, es unmetodo
post.
si pudo guardalo cuando respionda lo redirija al show
update: guarda o actualiza edit: crea la estructura
Destroy: encuentra el artculo a tarvex de un id y despues lo destruye y te envia a lapagina de donde estan
todos los articulos
scaffolding genera campos de manera inteligente dependiendo del tipo de dato. , no se lidia con lios de fecha
Deja listo para que lo hagas
se crea alrededor de la variable user, se componta diferente cuando es new y edit, edit rellena con info de la
base de datos,busca con base al id
CREAR UN FORMULARIO CON LOS METODOS AUXILIARES: ver formulario de blog
crear un parcial _formulario y cambiar el form por formulario
Luego se crean los helpers metods
Actualizando el formulario
creamos hashe que tiene 4 registros, el varol que se le da al registro es x de 1 es decir el nombre
abreviado,,pero el que va maostra el label es x[0] el nombre completo
-------------------------------------------------------------------------------------------------------------Ques es el archivo application.html.erb?-<!DOCTYPE html>
<html>
<head>
<title>Prueba</title>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
<body>
<%= yield %>
</body>
</html>
Que son
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>?
Son helpers que nos permiten cargar archivos css, javascript y los meta. Vale aclarar que estos archivos estn
dentro de la carpeta assets. Mientras que la lnea:
<%= yield %>
Se encargar de cargar una vista, la vista que cargar el controlador.
Tal vez no entiendas que es todo esto, pero tranquilo, ya habr tiempo para entenderlo bien. Simplemente voy
a decirte que este archivo application.html.erb ser como el esqueleto de nuestra pgina web
Ahora entraremos en nuestro proyecto a la carpeta app -> controllers ah dentro veremos un archivo con el
nombre del controlador que acabamos de crear, en mi caso principal_controller.rb. Si abrimos este archivo
con un editor veremos que tiene un aspecto como ste:
class PrincipalController < ApplicationController
def index
end
end
Seguramente habrs notado la ausencia de llaves. La clase definida se llama PrincipalController y se cierra
con un end al final. Tambin habrs notado el signo menor (<) esto se usa para decirle a la clase que
heredar de otra clase, en este caso ApplicationController, una clase que viene en el ncleo de Ruby on Rails.
Dentro de la clase hay un mtodo llamado index, que se define con la palabra reservada def y no con function
como s pasa en PHP. Tambin debe utilizarse un end para finalizar el mtodo.
Dentro de ese bloque escribiremos lo siguiente:
@saludo = "Hola mundo";
Esto es una variable. No te preocupes, ms adelante veremos algo de sintaxis de Ruby donde aprenderemos
los tipos de variables. As que la clase debera queda as:
class PrincipalController < ApplicationController
def index
@saludo = "Hola mundo";
end
end
Ahora guardaremos el archivo e iremos atrs a la carpeta views, dentro de app. Ac tambin hubo ruido,
seguramente veremos una carpeta llamada principal, o el nombre que le hayas puesto, y dentro de esta
carpeta un archivo de vista llamado index.html.erb con un aspecto similar a este:
<h1>Principal#index</h1>
<p>Find me in app/views/principal/index.html.erb</p>
Como vers es un simple cdigo html, pero no tiene ni la etiqueta html, ni head, ni body, ni meta, nada. Es
simplemente como dije antes, esto se cargar dentro del archivo application.html.erb, por tanto este trozo de
cdigo ser lo que imprima:
<%= yield %>
Si vemos nuestro cdigo fuente en nuestro navegador podremos comprobarlo.
Dentro de ese archivo index borraremos lo que est escrito y escribiremos lo siguiente:
<h1> <%= @saludo; %> </h1>
Esto es simple, dentro del controlador se crea una variable @saludo que luego mostraremos por pantalla
desde la vista con los tag de Ruby on Rails <%= @saludo %>, este tag tendr un igual ya que mostrar
contenido, similar a un echo de PHP. Guardamos el archivo.
Bien, ahora slo resta probar esto. Para ello explico cmo funciona las rutas en Ruby on Rails.
lo que harn las ruta es buscar un controlador y luego de la barra diagonal un mtodo, de esta forma:
http://localhost:3000/controlador/metodo
En nuestro caso:
http://localhost:3000/principal/index