Introducci贸n a ruby on rails

Sebastian Loaiza Correa

Ruby on rails es un framework web escrito en ruby, en esta serie de articulos vamos a construir una aplicaci贸n basica que nos ayudar谩 a comprender varios de los conceptos mas importantes dentro de uno de los frameworks mas populares en la web.

Lo primero que debemos hacer es instalar y configurar nuestro entorno de desarrollo para rails y esto creo que requiere un tutorial aparte donde se pueda mostrar bien el proceso para los diferentes OS, aqu铆 te dejo un tutorial bastante sencillo https://codigofacilito.com/articulos/como-instalar-ruby-y-ruby-on-rails

Despu茅s de esto ya estaremos listos para crear nuestra primera aplicaci贸n en rails.

Lo primero que debemos hacer es ir al directorio donde queramos crear nuestro proyecto, y luego en la consola ejecutamos:

rails new <projectname>

Asegurate de reemplazar <projectname> con el nombre de tu projecto, este comando de rails crear谩 una carpeta donde estan ubicados todos los archivos necesario para correr nuestro primer proyecto y comenzar a modificarlo, ahora vamos a correr nuestro servidor:


rails server

Ahora que tenemos lista nuestra primera aplicaci贸n con rails, pudiste ver que fue relativamente sencillo, pero para que puedas comenzar a modificar tu aplicaci贸n hay varios conceptos basicos que debes manejar.

Lo primero seria comprender como se estructura un proyecto en rails, rails es un framework que utiliza MVC como arquitectura para los proyectos que desarrollamos en el, lo que quiere decir que nuestra aplicaci贸n estar谩 dividida 3 partes principales, los modelos que son los encargados de manejar los datos, los controladores que componen la logica de negocio y las vistas que son la representaci贸n visual de nuestra aplicaci贸n.


驴Com贸 estan conectados?


Para entender esto, vamos a hacer un ejemplo practico, vamos a convertir nuestra aplicacion en una aplicaci贸n de notas, en primer lugar vamos a generar nuestro controlador


rails generate controller Notes index show

Esto nos devuelve una salida donde se muestra los archivos que se han creado y sus respectivas rutas, al generar nuestro controlador Notes junto con sus metodos index y show rails nos crea automaticamente la firma de estos metodos en nuestro controlador, sus rutas predeterminadas y sus archivos en views/notes que ya revisaremos mas adelante.

Vamos a config/routes.rb, en este archivo es donde vamos a configurar todas las rutas de nuestra aplicaci贸n, podemos ver las rutas que ha creado rails por nosotros, en este caso vamos a reemplazarlas por un metodo de rails llamado resources que nos permite crear todas las acciones RESTful.


resources :notes
root :to => "notes#index" #En '/' va a notes controller en su metodo index

Si vamos a nuestra consola y dentro de la carpeta de nuestro proyecto corremos rails routes podremos ver las rutas que resources ha creado por nosotros. Si no queremos tener todas las rutas podemos limitarlas por medio de los parametros except || only,聽 por ejemplo si ponemos resources :notes, except: [:delete], nos crear谩 todas las acciones RESTful excepto delete.

Antes de continuar necesitamos crear el modelo en el cual vamos a guardar nuestras notas, para esto ejecutamos


rails generate model Note title:string body:text

Generamos el modelo que por convenci贸n lo escribimos con la primera letra en may煤scula y en singular, seguido a te escribimos nuestras columnas seguidas de su respectivo tipo, esto nos generara un archivo de migraci贸n que crear谩 nuestra tabla, ejecutamos en la consola


rails db:migrate

Ahora que tenemos definidas las rutas y nuestro modelo vamos a nuestro controlador y crearemos el metodo new donde crearemos una nueva instancia Note.


def new
   @note = Note.new 
end

Como el nuestro metodo new es llamado mediante GET rails asocia nuestro metodo con una vista del mismo nombre en nuestra carpeta views/notes, entonces vamos a crear nuestro archivo .erb, ERB es el motor de plantillas de ruby el cual basicamente nos permite ejecutar codigo de ruby dentro de nuestro archivo html con una sintaxis bastante sencilla. Despues de crear nuestro archivo new.html.erb dentro de la carpeta views/notes vamos a crear el formulario para nuestras notas aqui.


<div class="form col-md-10">  
 <h1><Crear nota</h1>  
 <%= form_for(@note) do |f|%>    
  <div class="field">      
   <%=f.text_field :title, placeholder: "Titulo", class:"form-control data-title"%>    
  </div>    
  <div class="field">      
   <%=f.text_field :body %>    
  </div>     
  <div class="field">      
   <%=f.submit "guardar", class:"btn be-red white"%>    
  </div>  
 <%end%>
</div>

Para guardar las notas que creemos debemos hacerlo en el metodo create de nuestro controlador.


def create    
 @note = notes.new(params[:title, :body])     
 if @note.save()      
  redirect_to @note    
 else       
  render :new #use new view with this variable class    
 end
end

Ahora vamos a definir como queremos que se vean nuestras notas, en el medoto index para obterner todas las notas que hemos creado y en el show para obtener la vista individual de cada una de nuestras notas


def index  
 @notes = Note.all
end

def show  
 @note = Note.find(params[:id])
end

Vamos a index.html.erb para definir la vista general de las notas


<div class="row">  
 <% @notes.each do |note| %>    
  <div class="col-md-3">      
   <div class="note-box">        
    <h2 class="nav-item"><%= link_to note.title, note %></h2>        
    <div>          
     <%= truncate(note.body, length:80) %>        
    </div>      
   </div>    
  </div>  
 <% end %>
</div>

Y ahora vamos a show.html.erb


<article>  
 <div class="row center-xs">    
  <div class="col-xs-12 col-md-7">      
   <h1 class="text-center"><%= @note.title %></h1>      
   <div class="text-justify">        
    <%= @note.body %>      
   </div>    
  </div>  
 </div>
</article>

Ahora vamos a crear una barra de navegaci贸n para movernos por nuestra aplicaci贸n y revisar que todo ande bien, antes de eso debemos entender que es un layout y un partial dentro de rails y como estos se renderizan.

Un layout es una vista base sobre la cual se ejecutan las demas vistas de toda mi aplicaci贸n o de un controlador en especifico, es decir, una porci贸n de codigo que se reutiliza en cada vista sin necesidad de reescribirlo, si vamos a views/layouts all铆 esta聽 application.html.erb que es el layout para toda nuestra aplicaci贸n, si creamos dentro de esta carpeta un layout con el mismo nombre de nuestro controlador por ejemplo notes.html.erb tendr铆amos un layout solo para las vistas de notes (esto puede ser muy util cuando tienes multiples controladores).

Ahora un partial es tambi茅n una porci贸n de codigo que puedo reutilizar en otras vistas pero para聽 ejecutarlo debo a hacer render dentro de la vista que quiero que tenga el partial y en el lugar que quiero que se renderice esta parte de la vista, asi puedo utilizar o unir varios partials en mi vista y simplificar mi codigo. Como convencion el nombre de los partials comienzan con underscore.

En este caso dentro de la carpeta views/聽 vamos a crear una carpeta llamada partials/ all铆 crearemos _navigation.html.erb


<header>  
 <div class="be-red white large-padding">    
  <ul class="no-list row center-xs middle-xs">      
   <li class="col-md col-sm">        
    <h1 class="no-margin" id="logo"><%= link_to "Notes app", root_path %></h1>      
   </li>      
   <li class="col-md col-sm nav-item">        
    <%= link_to "notas", notes_path %>      
   </li>      
   <li class="col-md col-sm nav-item">         
    <%= link_to "crear nota", new_note_path %>      
   </li>    
  </ul>  
 </div>
</header>

Luego vamos a nuestro archivo layouts/application.html.erb y antes del body hacemos render de nuestra navegacion, as铆 la navegaci贸n se ejecutara para todas nuestras vistas


<%= render "partials/navigation" %>

Ahora podemos probar como va nuestra aplicaci贸n, corremos en la linea de comandos dentro de la carpeta de nuestro proyecto rails server o rails s.


Hasta ahora hemos entendido como es la estructura de una aplicaci贸n en rails y la funci贸n de cada uno de sus componentes pero para los siguientes pasos de nuestra aplicaci贸n (editar y eliminar), necesitaremos aprender como manejar diferentes usuarios dentro de la aplicaci贸n, para que cualquiera no pueda borrar ni editar nuestras notas.

Continua en: https://soyremoto.com/p/245074747805
#programacion #ruby #rails #web

Sebastian Loaiza Correa
sloaizac

Hi, my name is Sebastian, I'm engineering system student, I'm from Medellin-Colombia

full-stack developer
CO

Comentarios

Reg铆strate y haz el primer comentario!