Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Taller 11 Ajax Rails
Taller 11 Ajax Rails
Para que las aplicaciones Web se desarrollen con buena presentación debemos saber integrar
Ajax (que es la forma de trabajar JavaScript en forma asincrónica), que permite trabajar con
varios aspectos como las hojas de estilos CSS, interacción con el DOM, las peticiones
XMLHttpRequest. Actualiza también partes del contenido de nuestra web de manera asíncrona
y apoyándose en el lenguaje de programar JavaScript. Pero Rails cuenta con la posibilidad de
compilar archivos CoffeeScript. Este es un lenguaje de programación para mejorar la
legibilidad y con nuevas características inspiradas en lenguajes como Ruby. Él se encarga de
traducir el código CoffeScript a JavaScript.
El taller consiste en implementar una página principal con un formulario para crear nuevos
productos, y conforme los creamos visualizaremos la tabla con el producto añadido utilizando
Ajax.
Migramos :
$ rails db:migration
….
def create
@producto = Producto.new(producto_params)
respond_to do |format|
if @producto.save
format.html { redirect_to @producto, notice: 'Producto was successfully
created.' }
format.json { render :show, status: :created, location: @producto }
format.js
else
format.html { render :new }
format.json { render json: @producto.errors, status:
:unprocessable_entity }
end
end
Lo único que le hemos agrado son las respuestas que se dan sobre el formato javascript.
El siguiente paso es mostrar la plantilla parcial form para agregar un nuevo producto y quitar el
enlace New Producto para ello utilizaremos AJAX. En la plantilla parcial se debe agregar
remote: true.
Al enlace añadiremos dos parámetros, un identificador css que nos servirá para tratarlo en
javascript y la opción remote con valor verdadero para que reconozca que la llamada es tipo
Ajax.
Pulsamos nuestro enlace y la atención se dirige al método new del controlador Productos
donde le indicamos que realice una respuesta a la petición tipo js, al igual que cuando le
indicamos una respuesta html el buscara la plantilla con el nombre del método seguido de la
extensión html.erb, realizaremos lo mismo y creamos new.js.erb con el siguiente código
_producto.html.erb
<div>
<%= producto.nombre %>
<%= producto.precio %>
<%= producto.stock %>
<%= link_to "Show", producto %>
<%= link_to "Edit", edit_producto_path(producto) %>
<%= link_to "Destroy", producto, {method: "delete", remote: true, data: {
confirm: "esta seguro?" }} %>
</div>
Recordemos que para pasar un colección se llamara tantas veces la plantilla parcial producto
como elementos tenga el array.
new.js.erb
$ ("#enlace") .hide() .after("<%= j render partial: "form", object:@producto
%>")
Creamos un producto
Le estamos indicando que oculte el div con el identificador enlace y después ejecute el código
incluido entre comillas. Podemos apreciar que le indicamos el alias j (escape_javascript) con el
que conseguimos que ejecute el código del parcial indicado.
Una vez en nuestra plantilla js, haremos la operación contraria a la que anteriormente hemos
implementado en la plantilla new.js.erb y añadiremos el producto a la plantilla la cual lo
inserta pasado como variable local
create.js.erb
$("#formulario").hide()
$("#enlace").show()
$("#producto") .append("<%=j render partial: "producto", locals:
{producto:@producto} %>")
En este ejemplo se muestra cómo funciona e integra la tecnología Ajax en las aplicaciones
Rails.