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í .
La función link_to_remote proporciona la posibilidad de incluir un enlace que usa Javascript y XMLHttpRequest (es decir, Ajax ), 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
Fuente (madrecita lo que me ha costado encontrarla ): Rails Track




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.
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.