desarrollando con ror - vistas

126
Vistas en Rails 3.0 Desarrollando en Ruby On Rails Mario Alberto Chávez Cárdenas http://www.decisionesinteligentes.com @mario_chavez sábado 28 de agosto de 2010

Upload: nizaitsan

Post on 06-Apr-2015

94 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Desarrollando Con RoR - Vistas

Vistas en Rails 3.0Desarrollando en Ruby On Rails

Mario Alberto Chávez Cárdenashttp://www.decisionesinteligentes.com

@mario_chavez

sábado 28 de agosto de 2010

Page 2: Desarrollando Con RoR - Vistas

¿Quien soy?

sábado 28 de agosto de 2010

Page 3: Desarrollando Con RoR - Vistas

¿Quien soy?De Tijuana, Baja California

sábado 28 de agosto de 2010

Page 4: Desarrollando Con RoR - Vistas

¿Quien soy?De Tijuana, Baja California

Ingeniero en Sistemas Computacionales

sábado 28 de agosto de 2010

Page 5: Desarrollando Con RoR - Vistas

¿Quien soy?De Tijuana, Baja California

Ingeniero en Sistemas Computacionales

Consultor Independiente TI en decisionesinteligentes.com

sábado 28 de agosto de 2010

Page 6: Desarrollando Con RoR - Vistas

¿Quien soy?De Tijuana, Baja California

Ingeniero en Sistemas Computacionales

Consultor Independiente TI en decisionesinteligentes.com

Entre a Rails hace 2 años

sábado 28 de agosto de 2010

Page 7: Desarrollando Con RoR - Vistas

¿Quien soy?

sábado 28 de agosto de 2010

Page 8: Desarrollando Con RoR - Vistas

¿Quien soy?Iniciador de la comunidad tijuana.rb

sábado 28 de agosto de 2010

Page 9: Desarrollando Con RoR - Vistas

¿Quien soy?Iniciador de la comunidad tijuana.rb

Google groups tijuanarb y @tijuanarb

sábado 28 de agosto de 2010

Page 10: Desarrollando Con RoR - Vistas

¿Quien soy?Iniciador de la comunidad tijuana.rb

Google groups tijuanarb y @tijuanarb

Iniciador de los SHDHTJ en Tijuana

sábado 28 de agosto de 2010

Page 11: Desarrollando Con RoR - Vistas

¿Quien soy?Iniciador de la comunidad tijuana.rb

Google groups tijuanarb y @tijuanarb

Iniciador de los SHDHTJ en Tijuana

Blog http://mario-chavez.blogspot.com

sábado 28 de agosto de 2010

Page 12: Desarrollando Con RoR - Vistas

MVC

sábado 28 de agosto de 2010

Page 13: Desarrollando Con RoR - Vistas

MVCNavegador

Controlador

Modelo

Servidor webRuteo

Ejecución

Vista

sábado 28 de agosto de 2010

Page 14: Desarrollando Con RoR - Vistas

MVCNavegador

Controlador

Modelo

Servidor webRuteo

Ejecución

Vista

sábado 28 de agosto de 2010

Page 15: Desarrollando Con RoR - Vistas

MVCNavegador

Controlador

Modelo

Servidor webRuteo

Ejecución

Vista

sábado 28 de agosto de 2010

Page 16: Desarrollando Con RoR - Vistas

MVCNavegador

Controlador

Modelo

Servidor webRuteo

Ejecución

Vista

sábado 28 de agosto de 2010

Page 17: Desarrollando Con RoR - Vistas

MVCNavegador

Controlador

Modelo

Servidor webRuteo

Ejecución

Vista

sábado 28 de agosto de 2010

Page 18: Desarrollando Con RoR - Vistas

MVCNavegador

Controlador

Modelo

Servidor webRuteo

Ejecución

Vista

sábado 28 de agosto de 2010

Page 19: Desarrollando Con RoR - Vistas

MVCNavegador

Controlador

Modelo

Servidor webRuteo

Ejecución

Vista

sábado 28 de agosto de 2010

Page 20: Desarrollando Con RoR - Vistas

Vistas

sábado 28 de agosto de 2010

Page 21: Desarrollando Con RoR - Vistas

VistasSon la UI de nuestra aplicación

sábado 28 de agosto de 2010

Page 22: Desarrollando Con RoR - Vistas

VistasSon la UI de nuestra aplicación

Rails utiliza ERB

sábado 28 de agosto de 2010

Page 23: Desarrollando Con RoR - Vistas

VistasSon la UI de nuestra aplicación

Rails utiliza ERB

Son una mezcla de HTML y Ruby

sábado 28 de agosto de 2010

Page 24: Desarrollando Con RoR - Vistas

VistasSon la UI de nuestra aplicación

Rails utiliza ERB

Son una mezcla de HTML y Ruby

Son plantillas

sábado 28 de agosto de 2010

Page 25: Desarrollando Con RoR - Vistas

VistasSon la UI de nuestra aplicación

Rails utiliza ERB

Son una mezcla de HTML y Ruby

Son plantillas

<%= “Hola mundo” %>

sábado 28 de agosto de 2010

Page 26: Desarrollando Con RoR - Vistas

Relación VC

sábado 28 de agosto de 2010

Page 27: Desarrollando Con RoR - Vistas

Relación VCAcciones en un

controlador

sábado 28 de agosto de 2010

Page 28: Desarrollando Con RoR - Vistas

Relación VC

index

show

new

create

edit

update

destroy

index.html.erb

show.html.erb

new.html.erb

edit.html.erb

Acciones en un controlador

Vistas

sábado 28 de agosto de 2010

Page 29: Desarrollando Con RoR - Vistas

Estructura

sábado 28 de agosto de 2010

Page 30: Desarrollando Con RoR - Vistas

EstructuraLas vistas están en el directorio views

sábado 28 de agosto de 2010

Page 31: Desarrollando Con RoR - Vistas

EstructuraLas vistas están en el directorio views

Hay un directorio con el nombre de cada controlador

sábado 28 de agosto de 2010

Page 32: Desarrollando Con RoR - Vistas

EstructuraLas vistas están en el directorio views

Hay un directorio con el nombre de cada controlador

Layout contiene plantillas de estructura

sábado 28 de agosto de 2010

Page 33: Desarrollando Con RoR - Vistas

EstructuraLas vistas están en el directorio views

Hay un directorio con el nombre de cada controlador

Layout contiene plantillas de estructura

Shared contiene plantillas compartidas

sábado 28 de agosto de 2010

Page 34: Desarrollando Con RoR - Vistas

Layouts

sábado 28 de agosto de 2010

Page 35: Desarrollando Con RoR - Vistas

Layouts

sábado 28 de agosto de 2010

Page 36: Desarrollando Con RoR - Vistas

LayoutsHtml de la estructura compartida de la aplicación

sábado 28 de agosto de 2010

Page 37: Desarrollando Con RoR - Vistas

LayoutsHtml de la estructura compartida de la aplicación

<html> <head /> <body> <div id=”header”> ... </div> <div id=”content”> <%= yield %> </div> <div id=”sidebar”> <%= yield :sidebar %> </div> <div id=”footer”> ... </div> </body></html>

sábado 28 de agosto de 2010

Page 38: Desarrollando Con RoR - Vistas

Configurar layout

sábado 28 de agosto de 2010

Page 39: Desarrollando Con RoR - Vistas

Configurar layoutA nivel aplicación

class ApplicationController < ActionController::Base layout ‘main’end

sábado 28 de agosto de 2010

Page 40: Desarrollando Con RoR - Vistas

Configurar layoutA nivel aplicación

class ApplicationController < ActionController::Base layout ‘main’end

A nivel controladorclass PublicationsControler < ApplicationController layout ‘main’end

sábado 28 de agosto de 2010

Page 41: Desarrollando Con RoR - Vistas

Configurar layoutA nivel aplicación

class ApplicationController < ActionController::Base layout ‘main’end

A nivel controladorclass PublicationsControler < ApplicationController layout ‘main’end

A nivel controlador condicional

class PublicationsControler < ApplicationController layout ‘main’, :except => [:new]end

sábado 28 de agosto de 2010

Page 42: Desarrollando Con RoR - Vistas

Trabajar con vistas

sábado 28 de agosto de 2010

Page 43: Desarrollando Con RoR - Vistas

Trabajar con vistas

sábado 28 de agosto de 2010

Page 44: Desarrollando Con RoR - Vistas

Trabajar con vistasHtml y Ruby conforman el contenido de la vista

sábado 28 de agosto de 2010

Page 45: Desarrollando Con RoR - Vistas

Trabajar con vistasHtml y Ruby conforman el contenido de la vista

<div id="publication"> <div class="publidate"> <h4><span><%[email protected]_at.day%></span> <%[email protected]_at.strftime('%b').downcase!%></h4> </div> <div class="publititle"> <h3><%= @publication.title %></h3> <p>por: <%= @publication.user.display_name %></p> </div> <div class="publitype"> <%=image_tag get_category_image(@publication), :alt => get_category_name(@publication) %> </div> <div class="publicontent"> <p><%= @publication.body %></p> </div></div>

sábado 28 de agosto de 2010

Page 46: Desarrollando Con RoR - Vistas

Trabajar con vistas

sábado 28 de agosto de 2010

Page 47: Desarrollando Con RoR - Vistas

Trabajar con vistasLayout

<html> <head /> <body> <div id=”header”> ... </div> <div id=”content”> <%= yield %> </div> <div id=”sidebar”> <%= yield :sidebar %> </div> <div id=”footer”> ... </div> </body></html>

sábado 28 de agosto de 2010

Page 48: Desarrollando Con RoR - Vistas

Trabajar con vistasLayout

Vista (show)<html> <head /> <body> <div id=”header”> ... </div> <div id=”content”> <%= yield %> </div> <div id=”sidebar”> <%= yield :sidebar %> </div> <div id=”footer”> ... </div> </body></html>

<div> <h1>Contenido principal</h1> <div> ... </div></div>

<% content_for :sidebar %> <h2>Contenido del sidebar</h2> <div> ... </div><% end %>

sábado 28 de agosto de 2010

Page 49: Desarrollando Con RoR - Vistas

Render de vistas

sábado 28 de agosto de 2010

Page 50: Desarrollando Con RoR - Vistas

Render de vistas

sábado 28 de agosto de 2010

Page 51: Desarrollando Con RoR - Vistas

Render de vistasRender implícito

def show @publication = Publication.find(params[:id]) respond_with @publicationend

sábado 28 de agosto de 2010

Page 52: Desarrollando Con RoR - Vistas

Render de vistasRender implícito

def show @publication = Publication.find(params[:id]) respond_with @publicationend

Render explícitodef show @publication = Publication.find(params[:id]) render :show, :layout => ‘coolone’end

sábado 28 de agosto de 2010

Page 53: Desarrollando Con RoR - Vistas

Render de vistasRender implícito

def show @publication = Publication.find(params[:id]) respond_with @publicationend

Render explícitodef show @publication = Publication.find(params[:id]) render :show, :layout => ‘coolone’end

Redireccionar a accióndef create @publication = ... if @publication.save redirect_to publications_path else render :new endend

sábado 28 de agosto de 2010

Page 54: Desarrollando Con RoR - Vistas

Simplificar vistas

sábado 28 de agosto de 2010

Page 55: Desarrollando Con RoR - Vistas

Simplificar vistas

sábado 28 de agosto de 2010

Page 56: Desarrollando Con RoR - Vistas

Simplificar vistasVistas grande y complejas se pueden “romper en pedazos”

sábado 28 de agosto de 2010

Page 57: Desarrollando Con RoR - Vistas

Simplificar vistasVistas grande y complejas se pueden “romper en pedazos”

Parciales privados o compartidos

sábado 28 de agosto de 2010

Page 58: Desarrollando Con RoR - Vistas

Simplificar vistasVistas grande y complejas se pueden “romper en pedazos”

Parciales privados o compartidos

<div id="publication"> <div class="publidate"> <h4><span><%[email protected]_at.day%></span> <%[email protected]_at.strftime('%b').downcase!%></h4> </div> <div class="publititle"> <h3><%= @publication.title %></h3> <p>por: <%= @publication.user.display_name %></p> </div> <div class="publitype"> <%=image_tag get_category_image(@publication), :alt => get_category_name(@publication) %> </div> <div class="publicontent"> <p><%= @publication.body %></p> </div></div>

sábado 28 de agosto de 2010

Page 59: Desarrollando Con RoR - Vistas

Simplificar vistasVistas grande y complejas se pueden “romper en pedazos”

Parciales privados o compartidos

<div id="publication"> <%= render “content” %>

<%= render “shared/attachments” %></div>

<div id=”comments”> <%= render “comments” %></div>

<div id=”form”> <%= render “add_comment” %></div>

sábado 28 de agosto de 2010

Page 60: Desarrollando Con RoR - Vistas

Parciales

sábado 28 de agosto de 2010

Page 61: Desarrollando Con RoR - Vistas

ParcialesA los parciales se les antepone _ en el nombre: _menu.html.erb

sábado 28 de agosto de 2010

Page 62: Desarrollando Con RoR - Vistas

ParcialesA los parciales se les antepone _ en el nombre: _menu.html.erb

Rails puede inferir el nombre del parcial

sábado 28 de agosto de 2010

Page 63: Desarrollando Con RoR - Vistas

ParcialesA los parciales se les antepone _ en el nombre: _menu.html.erb

Rails puede inferir el nombre del parcial

Manejan su propio alcance en las variables

sábado 28 de agosto de 2010

Page 64: Desarrollando Con RoR - Vistas

ParcialesA los parciales se les antepone _ en el nombre: _menu.html.erb

Rails puede inferir el nombre del parcial

Manejan su propio alcance en las variables

En colecciones no tenemos que hacer .each

sábado 28 de agosto de 2010

Page 65: Desarrollando Con RoR - Vistas

ParcialesA los parciales se les antepone _ en el nombre: _menu.html.erb

Rails puede inferir el nombre del parcial

Manejan su propio alcance en las variables

En colecciones no tenemos que hacer .each

Pasar variables<%= render :partial => “menu”, :locals => { :myvar => @myvar } %>

sábado 28 de agosto de 2010

Page 66: Desarrollando Con RoR - Vistas

ParcialesA los parciales se les antepone _ en el nombre: _menu.html.erb

Rails puede inferir el nombre del parcial

Manejan su propio alcance en las variables

En colecciones no tenemos que hacer .each

Pasar variables<%= render :partial => “menu”, :locals => { :myvar => @myvar } %>

Pasar un objeto<%= render :partial => “publication”, :object => @publication %>

<%= render @publication %>

sábado 28 de agosto de 2010

Page 67: Desarrollando Con RoR - Vistas

ParcialesA los parciales se les antepone _ en el nombre: _menu.html.erb

Rails puede inferir el nombre del parcial

Manejan su propio alcance en las variables

En colecciones no tenemos que hacer .each

Pasar variables<%= render :partial => “menu”, :locals => { :myvar => @myvar } %>

Pasar un objeto<%= render :partial => “publication”, :object => @publication %>

<%= render @publication %>

Pasar una colección<%= render :partial => “publications”, :collection => @publications, :as => :publication %>

<%= render @publications, :spacer_template => “publication_rule” %>

sábado 28 de agosto de 2010

Page 68: Desarrollando Con RoR - Vistas

Helpers

sábado 28 de agosto de 2010

Page 69: Desarrollando Con RoR - Vistas

HelpersMétodos que “escriben” HTML por nosotros

sábado 28 de agosto de 2010

Page 70: Desarrollando Con RoR - Vistas

HelpersMétodos que “escriben” HTML por nosotros

Sintaxis de Ruby

sábado 28 de agosto de 2010

Page 71: Desarrollando Con RoR - Vistas

HelpersMétodos que “escriben” HTML por nosotros

Sintaxis de Ruby

Centrados en el uso de modelos

sábado 28 de agosto de 2010

Page 72: Desarrollando Con RoR - Vistas

HelpersMétodos que “escriben” HTML por nosotros

Sintaxis de Ruby

Centrados en el uso de modelos

Helpers genéricos _tag y sin _tag para modelos

sábado 28 de agosto de 2010

Page 73: Desarrollando Con RoR - Vistas

HelpersMétodos que “escriben” HTML por nosotros

Sintaxis de Ruby

Centrados en el uso de modelos

Helpers genéricos _tag y sin _tag para modelos

Todos los helpers usan safe code

sábado 28 de agosto de 2010

Page 74: Desarrollando Con RoR - Vistas

HelpersMétodos que “escriben” HTML por nosotros

Sintaxis de Ruby

Centrados en el uso de modelos

Helpers genéricos _tag y sin _tag para modelos

Todos los helpers usan safe code

Form helpers

sábado 28 de agosto de 2010

Page 75: Desarrollando Con RoR - Vistas

HelpersMétodos que “escriben” HTML por nosotros

Sintaxis de Ruby

Centrados en el uso de modelos

Helpers genéricos _tag y sin _tag para modelos

Todos los helpers usan safe code

Form helpers

Model helpers

sábado 28 de agosto de 2010

Page 76: Desarrollando Con RoR - Vistas

HelpersMétodos que “escriben” HTML por nosotros

Sintaxis de Ruby

Centrados en el uso de modelos

Helpers genéricos _tag y sin _tag para modelos

Todos los helpers usan safe code

Form helpers

Model helpers

Date and Time helpers

sábado 28 de agosto de 2010

Page 77: Desarrollando Con RoR - Vistas

HelpersMétodos que “escriben” HTML por nosotros

Sintaxis de Ruby

Centrados en el uso de modelos

Helpers genéricos _tag y sin _tag para modelos

Todos los helpers usan safe code

Form helpers

Model helpers

Date and Time helpers

Custom helpers

sábado 28 de agosto de 2010

Page 78: Desarrollando Con RoR - Vistas

Form helpers

sábado 28 de agosto de 2010

Page 79: Desarrollando Con RoR - Vistas

Form helpers<%= form_tag(search_path, :method => "get") do %> <%= label_tag(:q, "Search for:") %> <%= text_field_tag(:q) %> <%= submit_tag("Search") %><% end %>

sábado 28 de agosto de 2010

Page 80: Desarrollando Con RoR - Vistas

Form helpers<%= form_tag(search_path, :method => "get") do %> <%= label_tag(:q, "Search for:") %> <%= text_field_tag(:q) %> <%= submit_tag("Search") %><% end %>

<form action="/search" method="get"> <label for="q">Search for:</label> <input id="q" name="q" type="text" /> <input name="commit" type="submit" value="Search" /></form>

Para obtener el valor del input “q” en el controlador usamos params[:q]

sábado 28 de agosto de 2010

Page 81: Desarrollando Con RoR - Vistas

Form helpers<%= form_tag(search_path, :method => "get") do %> <%= label_tag(:q, "Search for:") %> <%= text_field_tag(:q) %> <%= submit_tag("Search") %><% end %>

<form action="/search" method="get"> <label for="q">Search for:</label> <input id="q" name="q" type="text" /> <input name="commit" type="submit" value="Search" /></form>

Para obtener el valor del input “q” en el controlador usamos params[:q]

check_box>tag

sábado 28 de agosto de 2010

Page 82: Desarrollando Con RoR - Vistas

Form helpers<%= form_tag(search_path, :method => "get") do %> <%= label_tag(:q, "Search for:") %> <%= text_field_tag(:q) %> <%= submit_tag("Search") %><% end %>

<form action="/search" method="get"> <label for="q">Search for:</label> <input id="q" name="q" type="text" /> <input name="commit" type="submit" value="Search" /></form>

Para obtener el valor del input “q” en el controlador usamos params[:q]

check_box>tag

radio_button_tag

sábado 28 de agosto de 2010

Page 83: Desarrollando Con RoR - Vistas

Form helpers<%= form_tag(search_path, :method => "get") do %> <%= label_tag(:q, "Search for:") %> <%= text_field_tag(:q) %> <%= submit_tag("Search") %><% end %>

<form action="/search" method="get"> <label for="q">Search for:</label> <input id="q" name="q" type="text" /> <input name="commit" type="submit" value="Search" /></form>

Para obtener el valor del input “q” en el controlador usamos params[:q]

check_box>tag

radio_button_tag

text_area_tag

sábado 28 de agosto de 2010

Page 84: Desarrollando Con RoR - Vistas

Form helpers<%= form_tag(search_path, :method => "get") do %> <%= label_tag(:q, "Search for:") %> <%= text_field_tag(:q) %> <%= submit_tag("Search") %><% end %>

<form action="/search" method="get"> <label for="q">Search for:</label> <input id="q" name="q" type="text" /> <input name="commit" type="submit" value="Search" /></form>

Para obtener el valor del input “q” en el controlador usamos params[:q]

check_box>tag

radio_button_tag

text_area_tag

password_field_tag

sábado 28 de agosto de 2010

Page 85: Desarrollando Con RoR - Vistas

Form helpers<%= form_tag(search_path, :method => "get") do %> <%= label_tag(:q, "Search for:") %> <%= text_field_tag(:q) %> <%= submit_tag("Search") %><% end %>

<form action="/search" method="get"> <label for="q">Search for:</label> <input id="q" name="q" type="text" /> <input name="commit" type="submit" value="Search" /></form>

Para obtener el valor del input “q” en el controlador usamos params[:q]

check_box>tag

radio_button_tag

text_area_tag

password_field_tag

hidden_field_tag

sábado 28 de agosto de 2010

Page 86: Desarrollando Con RoR - Vistas

Form helpers<%= form_tag(search_path, :method => "get") do %> <%= label_tag(:q, "Search for:") %> <%= text_field_tag(:q) %> <%= submit_tag("Search") %><% end %>

<form action="/search" method="get"> <label for="q">Search for:</label> <input id="q" name="q" type="text" /> <input name="commit" type="submit" value="Search" /></form>

Para obtener el valor del input “q” en el controlador usamos params[:q]

check_box>tag

radio_button_tag

text_area_tag

password_field_tag

hidden_field_tag

select_tag

sábado 28 de agosto de 2010

Page 87: Desarrollando Con RoR - Vistas

Model helpers

sábado 28 de agosto de 2010

Page 88: Desarrollando Con RoR - Vistas

Model helpers<%= form @publication do |f| %> <%= f.label :message %> <%= f.text_field :message %> <%= f.submit("Crear") %><% end %>

sábado 28 de agosto de 2010

Page 89: Desarrollando Con RoR - Vistas

Model helpers<%= form @publication do |f| %> <%= f.label :message %> <%= f.text_field :message %> <%= f.submit("Crear") %><% end %>

<form action="/publications" method="post"> <label for="message">Message</label> <input id="publication_message" name="publication[name]" type="text" /> <input name="commit" type="submit" value="Crear" /></form>

En el controlador obtenemos el objeto con params[:publication]

sábado 28 de agosto de 2010

Page 90: Desarrollando Con RoR - Vistas

Model helpers<%= form @publication do |f| %> <%= f.label :message %> <%= f.text_field :message %> <%= f.submit("Crear") %><% end %>

<form action="/publications" method="post"> <label for="message">Message</label> <input id="publication_message" name="publication[name]" type="text" /> <input name="commit" type="submit" value="Crear" /></form>

En el controlador obtenemos el objeto con params[:publication]

check_box

sábado 28 de agosto de 2010

Page 91: Desarrollando Con RoR - Vistas

Model helpers<%= form @publication do |f| %> <%= f.label :message %> <%= f.text_field :message %> <%= f.submit("Crear") %><% end %>

<form action="/publications" method="post"> <label for="message">Message</label> <input id="publication_message" name="publication[name]" type="text" /> <input name="commit" type="submit" value="Crear" /></form>

En el controlador obtenemos el objeto con params[:publication]

check_box

radio_button

sábado 28 de agosto de 2010

Page 92: Desarrollando Con RoR - Vistas

Model helpers<%= form @publication do |f| %> <%= f.label :message %> <%= f.text_field :message %> <%= f.submit("Crear") %><% end %>

<form action="/publications" method="post"> <label for="message">Message</label> <input id="publication_message" name="publication[name]" type="text" /> <input name="commit" type="submit" value="Crear" /></form>

En el controlador obtenemos el objeto con params[:publication]

check_box

radio_button

text_area

sábado 28 de agosto de 2010

Page 93: Desarrollando Con RoR - Vistas

Model helpers<%= form @publication do |f| %> <%= f.label :message %> <%= f.text_field :message %> <%= f.submit("Crear") %><% end %>

<form action="/publications" method="post"> <label for="message">Message</label> <input id="publication_message" name="publication[name]" type="text" /> <input name="commit" type="submit" value="Crear" /></form>

En el controlador obtenemos el objeto con params[:publication]

check_box

radio_button

text_area

password_field

sábado 28 de agosto de 2010

Page 94: Desarrollando Con RoR - Vistas

Model helpers<%= form @publication do |f| %> <%= f.label :message %> <%= f.text_field :message %> <%= f.submit("Crear") %><% end %>

<form action="/publications" method="post"> <label for="message">Message</label> <input id="publication_message" name="publication[name]" type="text" /> <input name="commit" type="submit" value="Crear" /></form>

En el controlador obtenemos el objeto con params[:publication]

check_box

radio_button

text_area

password_field

hidden_field

sábado 28 de agosto de 2010

Page 95: Desarrollando Con RoR - Vistas

Model helpers<%= form @publication do |f| %> <%= f.label :message %> <%= f.text_field :message %> <%= f.submit("Crear") %><% end %>

<form action="/publications" method="post"> <label for="message">Message</label> <input id="publication_message" name="publication[name]" type="text" /> <input name="commit" type="submit" value="Crear" /></form>

En el controlador obtenemos el objeto con params[:publication]

check_box

radio_button

text_area

password_field

hidden_field

select

sábado 28 de agosto de 2010

Page 96: Desarrollando Con RoR - Vistas

Otros helpers

sábado 28 de agosto de 2010

Page 97: Desarrollando Con RoR - Vistas

Otros helpersJavascript

<%= javascript_include_tag ‘applications’, ‘tools’ %>

<%= javascript_include_tag :all %>

<%= javascript_include_tag ‘application’, ‘tools’, :cache => true %>

sábado 28 de agosto de 2010

Page 98: Desarrollando Con RoR - Vistas

Otros helpersJavascript

<%= javascript_include_tag ‘applications’, ‘tools’ %>

<%= javascript_include_tag :all %>

<%= javascript_include_tag ‘application’, ‘tools’, :cache => true %>

Stylesheet<%= stylesheet_link_tag ‘application’, ‘admin’ %>

<%= stylesheet_link_tag :all %>

<%= stylesheet_link_tag ‘application’, ‘admin’, :cache => true %>

sábado 28 de agosto de 2010

Page 99: Desarrollando Con RoR - Vistas

Otros helpersEstos helpers esperan encontrar los archivos en /public

Javascript<%= javascript_include_tag ‘applications’, ‘tools’ %>

<%= javascript_include_tag :all %>

<%= javascript_include_tag ‘application’, ‘tools’, :cache => true %>

Stylesheet<%= stylesheet_link_tag ‘application’, ‘admin’ %>

<%= stylesheet_link_tag :all %>

<%= stylesheet_link_tag ‘application’, ‘admin’, :cache => true %>

Image tag<%= image_tag ‘header.png’ %>

sábado 28 de agosto de 2010

Page 100: Desarrollando Con RoR - Vistas

Otros helpersEstos helpers esperan encontrar los archivos en /public

/javascripts

Javascript<%= javascript_include_tag ‘applications’, ‘tools’ %>

<%= javascript_include_tag :all %>

<%= javascript_include_tag ‘application’, ‘tools’, :cache => true %>

Stylesheet<%= stylesheet_link_tag ‘application’, ‘admin’ %>

<%= stylesheet_link_tag :all %>

<%= stylesheet_link_tag ‘application’, ‘admin’, :cache => true %>

Image tag<%= image_tag ‘header.png’ %>

sábado 28 de agosto de 2010

Page 101: Desarrollando Con RoR - Vistas

Otros helpersEstos helpers esperan encontrar los archivos en /public

/javascripts

/stylesheets

Javascript<%= javascript_include_tag ‘applications’, ‘tools’ %>

<%= javascript_include_tag :all %>

<%= javascript_include_tag ‘application’, ‘tools’, :cache => true %>

Stylesheet<%= stylesheet_link_tag ‘application’, ‘admin’ %>

<%= stylesheet_link_tag :all %>

<%= stylesheet_link_tag ‘application’, ‘admin’, :cache => true %>

Image tag<%= image_tag ‘header.png’ %>

sábado 28 de agosto de 2010

Page 102: Desarrollando Con RoR - Vistas

Otros helpersEstos helpers esperan encontrar los archivos en /public

/javascripts

/stylesheets

/images

Javascript<%= javascript_include_tag ‘applications’, ‘tools’ %>

<%= javascript_include_tag :all %>

<%= javascript_include_tag ‘application’, ‘tools’, :cache => true %>

Stylesheet<%= stylesheet_link_tag ‘application’, ‘admin’ %>

<%= stylesheet_link_tag :all %>

<%= stylesheet_link_tag ‘application’, ‘admin’, :cache => true %>

Image tag<%= image_tag ‘header.png’ %>

sábado 28 de agosto de 2010

Page 103: Desarrollando Con RoR - Vistas

Otros helpersEstos helpers esperan encontrar los archivos en /public

/javascripts

/stylesheets

/images

Javascript<%= javascript_include_tag ‘applications’, ‘tools’ %>

<%= javascript_include_tag :all %>

<%= javascript_include_tag ‘application’, ‘tools’, :cache => true %>

Stylesheet<%= stylesheet_link_tag ‘application’, ‘admin’ %>

<%= stylesheet_link_tag :all %>

<%= stylesheet_link_tag ‘application’, ‘admin’, :cache => true %>

Image tag<%= image_tag ‘header.png’ %>

Link to<%= link_to ‘Nuevo’, new_publication_path %>

sábado 28 de agosto de 2010

Page 104: Desarrollando Con RoR - Vistas

Ajax en el cliente

sábado 28 de agosto de 2010

Page 105: Desarrollando Con RoR - Vistas

Ajax en el clienteEs no obstructivo en Rails 3.0

sábado 28 de agosto de 2010

Page 106: Desarrollando Con RoR - Vistas

Ajax en el clienteEs no obstructivo en Rails 3.0

Es agnósticos, podemos reemplazar prototype por jquery

sábado 28 de agosto de 2010

Page 107: Desarrollando Con RoR - Vistas

Ajax en el clienteEs no obstructivo en Rails 3.0

Es agnósticos, podemos reemplazar prototype por jquery

Usa HTML5 para agregar atributos

sábado 28 de agosto de 2010

Page 108: Desarrollando Con RoR - Vistas

Ajax en el clienteEs no obstructivo en Rails 3.0

Es agnósticos, podemos reemplazar prototype por jquery

Usa HTML5 para agregar atributos

No hay helpers especiales

sábado 28 de agosto de 2010

Page 109: Desarrollando Con RoR - Vistas

Ajax en el clienteEs no obstructivo en Rails 3.0

Es agnósticos, podemos reemplazar prototype por jquery

Usa HTML5 para agregar atributos

No hay helpers especiales

sábado 28 de agosto de 2010

Page 110: Desarrollando Con RoR - Vistas

Ajax en el clienteEs no obstructivo en Rails 3.0

Es agnósticos, podemos reemplazar prototype por jquery

Usa HTML5 para agregar atributos

No hay helpers especiales

No ajax<%= link_to ‘Mi link’, algun_path %>

<% form_for @modelo do |m| %>

sábado 28 de agosto de 2010

Page 111: Desarrollando Con RoR - Vistas

Ajax en el clienteEs no obstructivo en Rails 3.0

Es agnósticos, podemos reemplazar prototype por jquery

Usa HTML5 para agregar atributos

No hay helpers especiales

No ajax<%= link_to ‘Mi link’, algun_path %>

<% form_for @modelo do |m| %>

Con ajax<%= link_to ‘Mi link’, algun_path, :remote => true %>

<% form_for (@modelo, :remote => true) do |m| %>

sábado 28 de agosto de 2010

Page 112: Desarrollando Con RoR - Vistas

Ajax en el clienteEs no obstructivo en Rails 3.0

Es agnósticos, podemos reemplazar prototype por jquery

Usa HTML5 para agregar atributos

No hay helpers especiales

No ajax<%= link_to ‘Mi link’, algun_path %>

<% form_for @modelo do |m| %>

Con ajax<%= link_to ‘Mi link’, algun_path, :remote => true %>

<% form_for (@modelo, :remote => true) do |m| %>

Atributos HTML5

sábado 28 de agosto de 2010

Page 113: Desarrollando Con RoR - Vistas

Ajax en el clienteEs no obstructivo en Rails 3.0

Es agnósticos, podemos reemplazar prototype por jquery

Usa HTML5 para agregar atributos

No hay helpers especiales

No ajax<%= link_to ‘Mi link’, algun_path %>

<% form_for @modelo do |m| %>

Con ajax<%= link_to ‘Mi link’, algun_path, :remote => true %>

<% form_for (@modelo, :remote => true) do |m| %>

Atributos HTML5data-remote

sábado 28 de agosto de 2010

Page 114: Desarrollando Con RoR - Vistas

Ajax en el clienteEs no obstructivo en Rails 3.0

Es agnósticos, podemos reemplazar prototype por jquery

Usa HTML5 para agregar atributos

No hay helpers especiales

No ajax<%= link_to ‘Mi link’, algun_path %>

<% form_for @modelo do |m| %>

Con ajax<%= link_to ‘Mi link’, algun_path, :remote => true %>

<% form_for (@modelo, :remote => true) do |m| %>

Atributos HTML5data-remotedata-method

sábado 28 de agosto de 2010

Page 115: Desarrollando Con RoR - Vistas

Ajax en el clienteEs no obstructivo en Rails 3.0

Es agnósticos, podemos reemplazar prototype por jquery

Usa HTML5 para agregar atributos

No hay helpers especiales

No ajax<%= link_to ‘Mi link’, algun_path %>

<% form_for @modelo do |m| %>

Con ajax<%= link_to ‘Mi link’, algun_path, :remote => true %>

<% form_for (@modelo, :remote => true) do |m| %>

Atributos HTML5data-remotedata-methoddata-confirm

sábado 28 de agosto de 2010

Page 116: Desarrollando Con RoR - Vistas

Ajax en el clienteEs no obstructivo en Rails 3.0

Es agnósticos, podemos reemplazar prototype por jquery

Usa HTML5 para agregar atributos

No hay helpers especiales

No ajax<%= link_to ‘Mi link’, algun_path %>

<% form_for @modelo do |m| %>

Con ajax<%= link_to ‘Mi link’, algun_path, :remote => true %>

<% form_for (@modelo, :remote => true) do |m| %>

Atributos HTML5data-remotedata-methoddata-confirmdata-disable-with

sábado 28 de agosto de 2010

Page 117: Desarrollando Con RoR - Vistas

Ajax en el server

sábado 28 de agosto de 2010

Page 118: Desarrollando Con RoR - Vistas

Ajax en el serverSi queremos jquery en lugar de prototype

sábado 28 de agosto de 2010

Page 119: Desarrollando Con RoR - Vistas

Ajax en el serverSi queremos jquery en lugar de prototype

Agregamos jquery a javascripts

sábado 28 de agosto de 2010

Page 120: Desarrollando Con RoR - Vistas

Ajax en el serverSi queremos jquery en lugar de prototype

Agregamos jquery a javascripts

Borramos prototype

sábado 28 de agosto de 2010

Page 121: Desarrollando Con RoR - Vistas

Ajax en el serverSi queremos jquery en lugar de prototype

Agregamos jquery a javascripts

Borramos prototype

Descargamos rails.js de http://github.com/rails/jquery-ujs/tree/master/src/ a javascript

Agregamos la referencia en javascript_include_tag

sábado 28 de agosto de 2010

Page 122: Desarrollando Con RoR - Vistas

Ajax en el serverSi queremos jquery en lugar de prototype

Agregamos jquery a javascripts

Borramos prototype

Descargamos rails.js de http://github.com/rails/jquery-ujs/tree/master/src/ a javascript

Agregamos la referencia en javascript_include_tag

Crear una vista <accion>.js.erb

sábado 28 de agosto de 2010

Page 123: Desarrollando Con RoR - Vistas

Ajax en el serverSi queremos jquery en lugar de prototype

Agregamos jquery a javascripts

Borramos prototype

Descargamos rails.js de http://github.com/rails/jquery-ujs/tree/master/src/ a javascript

Agregamos la referencia en javascript_include_tag

Crear una vista <accion>.js.erb

Esta vista combina javascript y Ruby

sábado 28 de agosto de 2010

Page 124: Desarrollando Con RoR - Vistas

Ajax en el serverSi queremos jquery en lugar de prototype

Agregamos jquery a javascripts

Borramos prototype

Descargamos rails.js de http://github.com/rails/jquery-ujs/tree/master/src/ a javascript

Agregamos la referencia en javascript_include_tag

Crear una vista <accion>.js.erb

Esta vista combina javascript y Ruby

Por seguridad usamos protect_from_forgery en ApplicationController

sábado 28 de agosto de 2010

Page 126: Desarrollando Con RoR - Vistas

GraciasDesarrollando en Ruby On Rails

Mario Alberto Chávez Cárdenashttp://www.decisionesinteligentes.com

@mario_chavez

sábado 28 de agosto de 2010