jQuery, c’est fait pour faire du “unobstrusive” (tes scripts se font Ã
part
de la page et s’immiscent dans ta page toute propre en HTML qui ne
contient
que du contenu, des liens et des formulaires), ce qui est mieux que
prototype / scriptaculous (slash, dot, end of line, end of argument, die
die
foul troll), alors que Rails a plutôt dans ses gênes l’idée que écrire
du
JavaScript c’est chiant (ce qui n’est pas vrai), ce qui explique qu’il
essaye de l’abstraire avec du code Ruby tout le temps.
Là où avec Rails tu feras link_to_remote et remote_form_for, mais quand
tu
vas vouloir ajouter du JavaScript tu vas devoir jongler avec un medley
code
Ruby / code JS, en jQuery tu fais juste des link_to et des form_for, et
tu
vas faire des fichiers .js qui vont ajouter les comportements amusants
du
style :
$(document).ready(function() {
$(‘a.my_little_linkey’).click(function(event) { // par défaut, on
cherche
par sélecteur CSS, par défaut on applique les modifications à tous les
éléments trouvés
event.preventDefault(); // pour éviter les requêtes en double
this.parent(‘div’).load(this.attr(‘href’)); // requête AJAX sur la cible
du
lien clické qui va remplir la première div parent du lien clické avec ce
qui
est reçu, admirer la concision et l’élégance
});
$(‘#my_little_formey’).submit(function(event) { // a noter, s’il n’y a
pas
de mr. #mylittleformey, pas de problème, pas de risque de briser la
chaîne
d’exécution du script
event.preventDefault();
$.post(this.attr(‘action’), this.serialize(), function(data) { /* … */
},
“json”) // envoie une requête post au serveur à la bonne adresse avec
les
données du formulaire écrites proprement, exécute un callback Ã
l’arrivée en
lisant la réponse en JSON
});
$(‘.hidden_control_when_js_is_enabled’).hide(); // pour cacher des
contrôles
disgracieux quand on peut faire les choses mieux en JS
/* … */
});
Et plein d’autres merveilles.
Michel B.
2009/6/14 Gregoire LEJEUNE [email protected]