Juan Zenón
Seguro les encantó la funcionalidad que se implementó en este video. Muchos de ustedes se habrán dado cuenta que es una estrategia que ofrece una buena experiencia de usuario, pero, ¿qué pasa si necesito hacer esto en muchas partes de mi aplicación? ¿Siempre tendría que agregar un JS para cada una de las partes en las que quiero este tipo de funcionalidad? Esto es algo que tal vez muchos quieran evitar.
Bueno, el día de hoy vengo a hablarles de turbolinks_render. Recordemos que turbolinks es una biblioteca de JS que ayuda a que la carga de las páginas parezca más rápida de lo que es, así como cachear las páginas para que el navegar hacia atrás o hacia adelante sea mucho más rápido y no siempre haga peticiones a nuestro server.
Ahora, turbolinks_render es una gema que usa la magia de turbolinks para reemplazar el contenido de la página cuando el server recibe una petición AJAX. Es decir, basta con que nos encarguemos de que nuestro form haga una petición AJAX y que el controlador en el server haga render de una página completa (no solo de un partial). La gema añade un middleware para que la respuesta contenga un JS que reemplace el contenido de la página con el contenido de la respuesta.
Para nuestro caso podríamos usar el form tal cual lo tenemos y el controller:
def create @note = @task.notes.new(note_params) @note.user = current_user @note.save render 'tasks/show', task: @task end
Podemos obtener el mismo resultado con un redirect_to (aunque esto puede causar que la misma página se guarde varias veces en la historia del navegador), pero este método hace que sea más limpio para el usuario.
Para quien tenga curiosidad este es el link al repo de turbolinks_render. Y para los que tengan aún más curiosidad, este es el JS que la gema envía y hace toda la magia.
Heber Juan Lazo Benza
Parece q no tiene matenimiento la gema.