samedi 17 mai 2008

Comment laver sa moto et son équipement ?

Après vous avoir fourni une vidéo montrant comment garder sa moto sur 2 roues (petit rappel: c'est ici).

Je vous propose, après quelque navigation sur le web, un tutoriel vidéo sur comment laver, et sa moto, et son équipement ...
Je vous laisse la surprise de la découverte:

jeudi 15 mai 2008

Javascript dans Ruby on Rails - partie 1

Dans ce post, je vous ferai part de ma dernière aventure dans le monde de Rails.
J'ai eu un peu de mal à trouver des tutoriaux assez précis et en français. En réalité, je n'en ai pas trouvé.

Voici alors que je propose le mien.

Utiliser Ajax dans notre framework préféré, revient à écrire du javascript avec du Ruby dans les pages ou vues et à la volée.
Tout d'abord un bref bilan sur ce qu'est le RJS. Il s'agit d'une extension pour les vues au même titre que les ".rhtml". Seulement le serveur générera à la lecture de ces vues du code javascript interprété par le navigateur.
Les vues RJS remplaceront donc les vues RHTML pour une action du controller.
Avec Rails 2.0, ce ne sont plus des vues ".rhtml" ou ".rjs" mais ".html.erb" et ".js.erb" .
Dans la suite du tutoriel, je garderai l'appellation "RHTML" et "RJS" afin d'économiser mon clavier... ;)

Pour rendre les vues RJS efficaces, il est indispensable d'utiliser l'Ajax avec les méthodes des Helpers Javascript, Prototype ou Scriptaculous fourni dans ActionView utilisé par le framework Rails.
Une petite énumération de ces méthodes:

  • form_remote_tag
  • link_to_remote
  • link_to_function
  • remote_function
  • button_to_function
  • (s'il en manque, n'hésitez pas à me le signaler...)
Le javascript avec Ruby

Il y a plusieurs manières de réaliser du javascript dans le framework Ruby on Rails.
En effet, soit il est directement écrit dans les vues... bien évidemment, je ne parle pas d'écrire du code javascript dans des balises 'script' HTML, mais plutôt en Ruby. Il suffit alors d'utiliser les helper button_to_function ou encore link_to_function.
Ces deux outils s'utilisent dans la vue afin d'y inscrire une action javascript sur un onClick de lien ou du bouton:

<%= link_to_function "Lien", "code javascript", "options html" %>

par exemple, un lien pour réaliser une alerte:

<%= link_to_function "Cliquez ici", "alert("Clic réussi");", :id => "clicla", :class => "clicme" %>
Ceci créera un lien créant une alerte avec le message "Clic réussi" sur le onClick du lien. Ce lien aura un id "clicla" et la classe css "clicme" : Le Lien

Mais il est également possible de réaliser un bloc contenant plusieurs actions javascript successives. Le code javascript ainsi saisi sera du pur RJS.

<%= link_to_function "Lien", nil , "options html" do |page| .... code rjs .... end %>

L'objet 'page' sur lequel s'applique spécifiquement le code rjs correspond au document. Ainsi il est possible de:
- sélectionner un élément DOM à partir de son id > page[:id_du_DOM] ou page["id_du_DOM"]
- sélectionner une série d'éléments en fonction de leur classe css > page.select("style css") puis y ajouter les commandes que l'on veut effectuer en réalisant un page.select("").each ou page.select("").find_all ... etc ...
De manière générale, il est alors possible d'utiliser les outils du module ruby Enumerable que vous trouverez ici

Le helper button_to_function fonctionne à l'identique.

Dans un second temps, nous aborderons réellement ce qui fait de Ruby on Rails et de ses Helpers Ajax quelquechose de magique.

A SUIVRE ....