Publicidad:
La Coctelera

Sugerencia de presentación

He nacido para vago

12 Octubre 2007

Plugin LiveValidation para Rails

Este plugin fue parido básicamente por los pasillos, bares y habitaciones de hotel de la RailsConfEurope, supongo que llevado por el ambientazo que había, que te hacía sentir la necesidad de hacer algo chulo ya. Los detalles se han ido puliendo en ratos muertos desde entonces. Obvia decir que esos ratos muertos han sido alarmentemente pocos.

Avisando que es beta total, así que Puede Fallar (tm), y precisamente por eso te agradezco que lo pruebes, y si te da algún problema o hay algo que no te mole me des un toque y me lo cuentes.

La idea del plugin es integrar en Rails la librería de Javascript LiveValidation, que no sé si conoces, pero está superchula. Se trata de un librería para validación de formularios (al estilo de las validaciones de Rails para los modelos) en cliente. Estas validaciones están muy chulas pero obviamente no te puedes fiar de ellas (el usuario puede tener Javascript desactivado, sin ir más lejos), así que tienes que volver a validar en el servidor. Y esto, para cualquier vago o fundamentalista del DRY que se precie, es casi herético.

Este plugin genera automáticamente el código Javascript para validar en el cliente a partir de las validaciones que tengas definidas en los modelos, a condición 1) que uses la validación estándar de Rails (obvio), y 2) que uses los helpers para generar formularios. Es totalmente transparente, así que en teoría puedes instalarlo en una aplicación ya hecha, y si se cumplen las condiciones citadas, se empezará a ejecutar la validación en cliente.

Instrucciones:

  1. Instala el plugin:
    $ script/plugin install svn://rubyforge.org/var/svn/livevalidation
     
  2. Instala el Javascript y el CSS en el public/, con esta tarea de Rake:
    $ rake livevalidation:install
     

    Recuerda que habrás de incluirlos en las cabeceras de las páginas, así como Prototype (LiveValidation se basa en Prototype), por ejemplo así:

     <%= javascript_include_tag 'prototype', 'live_validation' %>
     <%= stylesheet_link_tag 'live_validation' %>
     
  3. No hay paso 3, salvo lo ya dicho: que crees tus formularios con algo de este estilo (cosa que, por otra parte, deberías estar haciendo hace ya mucho):
    <% form_for(:resource, :url => resources_path) do |f| %>
     <%= f.text_field :name %>
     [etcétera ...]
     <% end %>
     

Lo pruebas y me lo cuentas.

Por hacer:

  • Añadir soporte para algunas validaciones y opciones que faltan (principalmente, validates_confirmation_of)
  • Más tests (aunque las partes que más guerra me dieron sí están cubiertas)
  • Documentación (en la mejor tradición ). Aunque sea un mísero README. Ya hay un README, además colgado en la flamante página del plugin.

servido por porras 6 comentarios compártelo

6 comentarios · Escribe aquí tu comentario

lamazmorradelandroide

lamazmorradelandroide dijo

Live validation, genial xD

Fuerza y honor.

12 Octubre 2007 | 09:46 PM

Luismi Cavallé

Luismi Cavallé dijo

Muy interesante el plugin, habrá que echarle un ojo.

Algo así debería venir "de serie" en Rails (probablemente algún día lo haga)

15 Octubre 2007 | 03:07 PM

Luismi Cavalle

Luismi Cavalle dijo

Todavía no he podido probarlo. Pero se me ocurría que quizá el enfoque que propones no es muy flexible en cuanto a dónde y cómo se muestran los validadores. Quizá algo como esto ayudase en este sentido:

http://pastie.caboo.se/pastes/107333

Espero que el snippet sea autoexplicativo ;)

15 Octubre 2007 | 11:27 PM

porras

porras dijo

Totalmente autoexplicativo =;-)

En un principio era lo que quería hacer, pero luego me pareció también muy atractiva la idea del "plug&play", el enchufarlo a una aplicación ya hecha al estilo "estándar" y tener la validación por la cara. Quizá lo chulo sería poder usar una variable de configuración o algo así, porque los dos enfoques tienen sus ventajas y sus inconvenientes. Tengo que pensar en ello =;-)

¡Y gracias por tu opinión!

15 Octubre 2007 | 11:31 PM

Sergio Espeja

Sergio Espeja dijo

Hola Sergio!

Enhorabuena por la publicación del plugin! Vi en vivo y en directo parte de su gestación en la RailsConf Europe, jeje.

Un saludo!

16 Octubre 2007 | 09:15 AM

Escribe tu comentario


Sobre mí

Avatar de porras

Sugerencia de presentación

ver perfil »
contacto »

Me llamo Sergio Gil Pérez de la Manga, y mi madre se cabrea si escribo mi nombre con un sólo apellido. Vivo, trabajo y hago casi todo lo demás en Madrid.

Trabajo como programador porque es lo más parecido que he encontrado a no trabajar. Sobre todo si lo haces bien. Y en eso estoy, en hacerlo cada vez mejor para trabajar cada vez menos. Alguno lo llamaría vagancia, y yo ahí no me meto.

Algunas de las herramientas que en este momento me llevan al Nirvana de no dar un palo al agua son Ruby, Ruby on Rails, Textmate, cualquier sabor de Unix (en este momento principalmente MacOSX pero también Ubuntu Linux) y sus herramientas, o Rake. En ocasiones hablo de ellas aquí, pienso que a alguien le pueden servir y que no puedo ser el único al que no le gusta trabajar.

Y como no sólo de tecnología vive el hombre (bueno, el hombre no sé, pero desde luego yo no), por aquí aparece de vez en cuando la punta del iceberg de mis pequeños pensamientos; al menos la parte de ellos que no cabe en Twitter.

Bienvenidos todos.

Y ahora: ¿Y tú?

Fotos

porras todavía no ha subido ninguna foto.

¡Anímale a hacerlo!

Buscar

suscríbete

Selecciona el agregador que utilices para suscribirte a este blog (también puedes obtener la URL de los feeds):

¿Qué es esto?

Crea tu blog gratis en La Coctelera