Download - 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
¿Quien soy?
sábado 28 de agosto de 2010
¿Quien soy?De Tijuana, Baja California
sábado 28 de agosto de 2010
¿Quien soy?De Tijuana, Baja California
Ingeniero en Sistemas Computacionales
sábado 28 de agosto de 2010
¿Quien soy?De Tijuana, Baja California
Ingeniero en Sistemas Computacionales
Consultor Independiente TI en decisionesinteligentes.com
sábado 28 de agosto de 2010
¿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
¿Quien soy?
sábado 28 de agosto de 2010
¿Quien soy?Iniciador de la comunidad tijuana.rb
sábado 28 de agosto de 2010
¿Quien soy?Iniciador de la comunidad tijuana.rb
Google groups tijuanarb y @tijuanarb
sábado 28 de agosto de 2010
¿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
¿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
MVC
sábado 28 de agosto de 2010
MVCNavegador
Controlador
Modelo
Servidor webRuteo
Ejecución
Vista
sábado 28 de agosto de 2010
MVCNavegador
Controlador
Modelo
Servidor webRuteo
Ejecución
Vista
sábado 28 de agosto de 2010
MVCNavegador
Controlador
Modelo
Servidor webRuteo
Ejecución
Vista
sábado 28 de agosto de 2010
MVCNavegador
Controlador
Modelo
Servidor webRuteo
Ejecución
Vista
sábado 28 de agosto de 2010
MVCNavegador
Controlador
Modelo
Servidor webRuteo
Ejecución
Vista
sábado 28 de agosto de 2010
MVCNavegador
Controlador
Modelo
Servidor webRuteo
Ejecución
Vista
sábado 28 de agosto de 2010
MVCNavegador
Controlador
Modelo
Servidor webRuteo
Ejecución
Vista
sábado 28 de agosto de 2010
Vistas
sábado 28 de agosto de 2010
VistasSon la UI de nuestra aplicación
sábado 28 de agosto de 2010
VistasSon la UI de nuestra aplicación
Rails utiliza ERB
sábado 28 de agosto de 2010
VistasSon la UI de nuestra aplicación
Rails utiliza ERB
Son una mezcla de HTML y Ruby
sábado 28 de agosto de 2010
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
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
Relación VC
sábado 28 de agosto de 2010
Relación VCAcciones en un
controlador
sábado 28 de agosto de 2010
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
Estructura
sábado 28 de agosto de 2010
EstructuraLas vistas están en el directorio views
sábado 28 de agosto de 2010
EstructuraLas vistas están en el directorio views
Hay un directorio con el nombre de cada controlador
sábado 28 de agosto de 2010
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
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
Layouts
sábado 28 de agosto de 2010
Layouts
sábado 28 de agosto de 2010
LayoutsHtml de la estructura compartida de la aplicación
sábado 28 de agosto de 2010
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
Configurar layout
sábado 28 de agosto de 2010
Configurar layoutA nivel aplicación
class ApplicationController < ActionController::Base layout ‘main’end
sábado 28 de agosto de 2010
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
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
Trabajar con vistas
sábado 28 de agosto de 2010
Trabajar con vistas
sábado 28 de agosto de 2010
Trabajar con vistasHtml y Ruby conforman el contenido de la vista
sábado 28 de agosto de 2010
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
Trabajar con vistas
sábado 28 de agosto de 2010
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
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
Render de vistas
sábado 28 de agosto de 2010
Render de vistas
sábado 28 de agosto de 2010
Render de vistasRender implícito
def show @publication = Publication.find(params[:id]) respond_with @publicationend
sábado 28 de agosto de 2010
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
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
Simplificar vistas
sábado 28 de agosto de 2010
Simplificar vistas
sábado 28 de agosto de 2010
Simplificar vistasVistas grande y complejas se pueden “romper en pedazos”
sábado 28 de agosto de 2010
Simplificar vistasVistas grande y complejas se pueden “romper en pedazos”
Parciales privados o compartidos
sábado 28 de agosto de 2010
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
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
Parciales
sábado 28 de agosto de 2010
ParcialesA los parciales se les antepone _ en el nombre: _menu.html.erb
sábado 28 de agosto de 2010
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
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
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
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
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
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
Helpers
sábado 28 de agosto de 2010
HelpersMétodos que “escriben” HTML por nosotros
sábado 28 de agosto de 2010
HelpersMétodos que “escriben” HTML por nosotros
Sintaxis de Ruby
sábado 28 de agosto de 2010
HelpersMétodos que “escriben” HTML por nosotros
Sintaxis de Ruby
Centrados en el uso de modelos
sábado 28 de agosto de 2010
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
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
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
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
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
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
Form helpers
sábado 28 de agosto de 2010
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
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
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
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
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
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
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
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
Model helpers
sábado 28 de agosto de 2010
Model helpers<%= form @publication do |f| %> <%= f.label :message %> <%= f.text_field :message %> <%= f.submit("Crear") %><% end %>
sábado 28 de agosto de 2010
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
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
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
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
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
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
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
Otros helpers
sábado 28 de agosto de 2010
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
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
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
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
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
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
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
Ajax en el cliente
sábado 28 de agosto de 2010
Ajax en el clienteEs no obstructivo en Rails 3.0
sábado 28 de agosto de 2010
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
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
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
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
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
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
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
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
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
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
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
Ajax en el server
sábado 28 de agosto de 2010
Ajax en el serverSi queremos jquery en lugar de prototype
sábado 28 de agosto de 2010
Ajax en el serverSi queremos jquery en lugar de prototype
Agregamos jquery a javascripts
sábado 28 de agosto de 2010
Ajax en el serverSi queremos jquery en lugar de prototype
Agregamos jquery a javascripts
Borramos prototype
sábado 28 de agosto de 2010
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
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
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
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
Recursoshttp://edgeguides.rubyonrails.org
http://rubyonrails.org/screencasts/rails3/
http://railscasts.com/
http://groups.google.com/group/tijuanarb
http://rails.mx
sábado 28 de agosto de 2010
GraciasDesarrollando en Ruby On Rails
Mario Alberto Chávez Cárdenashttp://www.decisionesinteligentes.com
@mario_chavez
sábado 28 de agosto de 2010