Ruby on Rails: link_to_remote sin Javascript (noscript)

Bueno, tras este confuso título se esconde un pequeño truco que me ha costado horrores encontrar. Estoy usando el framework Ruby On Rails para un proyecto personal y he decidido que ya soy mayor y puedo usar Ajax. El problema es que tuve una asignatura, Diseño Web Accesible, que corrompió mi mente para siempre y ahora me ando preocupando de si el navegador tiene o no Javascript y zarandajas así icon_rolleyes.gif .

La función link_to_remote proporciona la posibilidad de incluir un enlace que usa Javascript y XMLHttpRequest (es decir, Ajax icon_razz.gif ), pero si el navegador no dispone de Javascript o lo tiene desactivado, el enlace queda inútil, y no es lo más deseable sobretodo si ese enlace no tiene que usar Ajax por narices, aunque usarlo mejora la eficiencia y la experiencia del usuario.

Sin más preámbulos, os dejo un código de ejemplo de la función en la cuál se genera un enlace normal o uno tipo Ajax según la disponibilidad de Javascript en el navegador:

<%= link_to_remote _("login"), {
   :url => {:controller => "account", :action => "login", :layout => "false"}, # If JS
   :update => "content",
   :loading => "new Effect.Appear('loading_message', { duration: 0.5} ); ",
   :complete => "new Effect.Fade('loading_message', { duration: 0.3 }); " },
   :href  => url_for(:controller => "account", :action => "login") # If no JS
%>

Las líneas interesantes son la segunda y la última. La segunda especifica la acción para Javascript, mientras que la última especifica el destino del enlace cuando no existe Javascript. Ambas opciones ejecutan la acción login sobre el controlador account. La opción layout que se usa en caso de tener Javascript indica al método que no genere el HTML general que rodea al formulario (es decir, la cabecera de la página, el pié, etcétera) ya que sólo se va a recargar el contenido (como se ve en la opción :update). En el caso del enlace sin Javascript, sí necesitamos dicho HTML ya que se recargará la página completa.

Edito: Recomiendo encarecidamente que si has llegado hasta aquí usando Google leas esta entrada del blog Ruido Blanco que nos apunta su creador en un comentario. Tanto el contenido de la entrada como las posteriores aclaraciones de los comentarios me han ayudado muchísimo a comprender cómo funciona Rails y incluso el protocolo HTTP icon_smile.gif

Fuente (madrecita lo que me ha costado encontrarla icon_lol.gif ): Rails Track

2 Respuestas a “Ruby on Rails: link_to_remote sin Javascript (noscript)”


  1. 1 YoNoSoyTu

    El código no se ve en la página web… ups (escapa los > y los <).

    Un par de enlaces:

    - una explicación y una solución parecida de tu problema.

    - UJS Rails plugin, un plugin para utilizar JS no obstrusivo en Rails (aunque parece abandonado).

    - LowPro, una librería por encima de Prototype para utilizar JS no obstrusivo.

    Pero los dos últimos son para sacar matricula, claro.

  2. 2 deigote

    Jejeje ya te estaba echando de menos icon_biggrin.gif veo que esta vez no tienes ninguna pega al contenido del post, así que me aplaudo icon_cool.gif ya pensaba que habría dicho alguna barbaridad railense icon_lol.gif
    Sobre lo que me comentas del código, yo lo veo bien icon_confused.gif será el safari que no hace caso de la etiqueta pre, o yo que no entiendo la misma pero Firefox hace lo que yo pienso que debe hacer icon_smile.gif
    Aun así, como quiero que los usuarios tecnológicamente menos avanzados también puedan usar la web (que cabroncete que soy icon_lol.gif ), voy a editarlo.

Añade un Comentario

XHTML: Usted puede utilizar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>