RoR + Ajax

Bonjour,
je suis en train de travailler avec le template RJS, avec en particulier
l’usage des fonctions “insert_html” et “visual_effect”. Le problème qui
se pose est que ma page renvoyée (qui me rend l’effet voulu) se voit
tâchée par l’affichage de ma requête en toute lettre traduite par mon
navigateur , du style

try { new Insertion.Before(“contenu_tableau”, " \n…; new
Effect.Highlight(“contenu_tableau”,{duration:2}); } catch (e) {
alert(‘RJS error:\n\n’ + e.toString()); alert('new
Insertion.Before(“contenu_tableau”, "

(et c’est pas jolie du tout!!!). Comment faire pour ne plus avoir du
code sur ma page?
Merci de votre aide

moufid

Bizarre mais il s’affiche où ce code?

Le 30 mai 06 à 10:25, moufid zeribi a écrit :

Ca c’est parce que l’en tête content/type de ta réponse est settée d’une
manière ou d’une autre à text/html au lieu de text/javascript … Tu es
bien en version récente de rails ? l’extension de ton template est bien
.rjs ? tu ne settes pas toi même l’entête content-type à text/html …

voila qq idées de réflexion !!!

A+
Thomas

moufid zeribi wrote:

Insertion.Before(“contenu_tableau”, "

(et c’est pas jolie du tout!!!). Comment faire pour ne plus avoir du
code sur ma page?

Il faut bien comprendre la nature d’un template RJS, ce n’est rien
d’autre que du code javascript envoyé dans une requête http.
Donc ca doit impérativement être lu et évalué via javascript pour être
utile et donc 99% du temps par Ajax.

Donc si tu vois du code il y a deux réponses possibles:

Premier cas: tu ne vois que ca (la page = la réponse RJS)

Alors c’est que tu as fait un lien directe vers ton controller ce qui ne
peut pas marcher, il faut que ce soit evaluer par javascript, ton
navigateur lui ne fait que naviger.

Bref remplacer un link_to ou par link_to_remote (et équivalent suivant
le cas formulaire).

Si c’est déjà le cas alors 1) tu n’as pas chargé prototype, 2) l’appel
ajax rate/erreur JS et ton navigateur passe par un failback sans
javascript et et charge la page lui même.

Deuxième cas: une partie de l’écran est remplacé par le code rjs au lieu
d’être évaluer. Ce qui signifie que c’est bien récupéré par JS mais pas
évalué.
Deux possibilités:

1/ faire rake update_javascript (ta version de prototype ne supporte
peut-être pas RJS)
2/ regarder le code source de la page, et notamment le javascript qui
invoque le controller devant déliver le RJS:
Vérifie que l’appelle Ajax a pour options “evalScript:true”.
Si c’est un Ajax.Updater c’est que tu as fait une erreur, ca ne permet
pas d’évaluer du rjs ca fait juste de l’insertion quand bien même
evalScript est setté à true.

Renaud

Je pense que tu as oublié :

<%= javascript_include_tag “prototype” %>
<%= javascript_include_tag “effects” %>

Dans ta vue

++ krull

-----Message d’origine-----
De : [email protected]
[mailto:[email protected]] De la part de moufid zeribi
Envoyé : mardi 30 mai 2006 10:25
À : [email protected]
Objet : [RailsFr] RoR + Ajax

Bonjour,
je suis en train de travailler avec le template RJS, avec en particulier
l’usage des fonctions “insert_html” et “visual_effect”. Le problème qui
se pose est que ma page renvoyée (qui me rend l’effet voulu) se voit
tâchée par l’affichage de ma requête en toute lettre traduite par mon
navigateur , du style

try { new Insertion.Before(“contenu_tableau”, " \n…; new
Effect.Highlight(“contenu_tableau”,{duration:2}); } catch (e) {
alert(‘RJS error:\n\n’ + e.toString()); alert('new
Insertion.Before("contenu_tableau", "

(et c’est pas jolie du tout!!!). Comment faire pour ne plus avoir du
code sur ma page?
Merci de votre aide

moufid


Railsfrance mailing list
[email protected]
http://lists.rubyonrails.fr/mailman/listinfo/railsfrance