He estado usando JSON para manejar la funcionalidad AJAX en mis aplicaciones de rieles desde que me enteré, porque el uso de RJS/HTML de renderizado "se sentía" mal porque violó a MVC. El primer proyecto pesado de AJAX en el que trabajé terminó con 20-30 acciones de controlador vinculadas directamente a comportamientos de UI específicos y mi código de vista se extendió por acciones de controlador, parciales y archivos rjs. El uso de JSON le permite mantener el código específico de la vista, y solo hablar para ver las acciones del controlador agnóstico/REST a través de AJAX para obtener los datos necesarios.Actualizando HTML a través de JSON/AJAX
El único dolor de cabeza que he encontrado al usar JSON puro es que tienes que "renderizar" HTML a través de JS, que en el caso de AJAX que tiene que actualizar elementos DOM-heavy, puede ser un verdadero dolor. Termino con mucho código de construcción cadena como
// ...ajax
success: function(records){
$(records).each(function(record){
var html = ('<div id="blah">' + record.attr +
etc +
')
})
}
donde etc es de 10-15 líneas de construir dinámicamente HTML basado en datos de registro. Además de la molestia, un enfoque más serio de este enfoque es la duplicación de la estructura HTML (en la plantilla y en el JS). * ¿Existe una mejor práctica para este enfoque?
(Mi motivación para finalmente llegar es que estoy ahora en la tarea con la actualización de HTML tan complejo que requiere dos bucles anidados de código Ruby para hacer en el primer lugar. Duplicación de que en JavaScript parece una locura.)
- Una cosa que he considerado es cargar archivos parciales estáticos directamente desde el sistema de archivos, pero esto parece un poco demasiado.
Esto todavía es un poco complicado y tienes que incluir el diseño en tu Javascript. Me gusta mucho la plantilla de John Resig en una de las otras respuestas que muy claramente (en su mayoría) separa la interfaz de usuario y el controlador. Genial si Jaml trabaja para ti sin embargo :) – Jaanus