On 6/14/07, Jean-François <[EMAIL PROTECTED]> wrote:
> Cyril :
> > Dans une page, j'ai un noeud avec un identifiant particulier, que
> > j'insére dans un autre noeud par la méthode :
> >
> > page.insert_html :top, 'noeud', "<div id='new' >coucou</div>"
> >
> > Au premier passage aucun problème. Mais je peux être amené à devoir
> > remplacer ce nouveaux noeud d'identifiant new avec le même template
> > RJS.
> >
> > Donc je voudrais savoir comment testé l'existence ou pas d'un noeud
> > avec un identifiant précis.
>
> côté serveur, je ne pense pas que ce soit possible.

Si on peux le faire en faisant en JS :

if ($('new') == undefined) {
}

>
> > J'ai vu que je pouvais faire :
> >
> > page['new]
> >
> > qui me renvoi un
> > #<ActionView::Helpers::JavaScriptElementProxy:0xb727371c>, mais je
> > n'ai pas trouvé la doc sur cette objet et donc les méthodes qui y sont
> > associées.
>
> Je ne vois pas en quoi cette documentation pourrait t'aider.
>
> Tu n'as pas un dialogue entre le serveur et le client, genre :
>
> "- Cher client, ce DOM id existe-t-il ?"
> - Cher serveur, point du tout.
> - Ah dans ce cas, je vous balance ce RJS sous cette forme-là
> plutôt que celle-ci, faites-en bon usage.
> - Bien reçu, je l'exécute. Au plaisir"
>
> C'est plutôt :
>
> - Tiens client, je te balance du RJS ou plutôt du JS généré
> par Rails, tu l'exécutes et ya intérêt que ça marche !
> - Ok chef.
>
> La vérification si le dom id existe, je fais ci sinon je fais
> ça doit se faire côté client et non côté serveur.
>
> Quand le RJS est "dynamique", ie des structures de contrôle
> Ruby ou des boucles :
>
> genre :
>
> @comments.each do |comment|
>   page["[EMAIL PROTECTED]"].hide
> end
>
> if ma_condition
>   page.visual_effect ...
> else
>   page.replace_html...
> end
>
> Ces structures sont utilisées côté serveur.
>
> Pour avoir du JS "dynamique" ie. avec des structures
> de contrôle, tu utilises << , par exemple
>
> page << "if ma_condition {"
> page.replace_html ...
> page << "}"
>
> page << "Try.these {"
> ...
> page << "}"
>
> Mais tu peux aussi appeler une fonction JS que t'as
> défini dans application.js, qui vérifie l'existence du noeud
> avant de faire telle opération, et tu l'appelles côté RJS
> avec page.call
>
> Bon, je sais plus ce que je voulais dire, mais je m'arrête
> là pour le moment.

En faite, pour moi le RJS n'était qu'un utilitaire à créer du JS.
Donc, je voulais pas vérifier coté serveur si mon noeud était là, je
voulais créer une condition en JS. Donc si je comprend bien la
technique sera d'incorporer le JS directement dans mon objet page
comme cela :

page << if ($('new') == undefined){
page.insert_html ...
page << } else {
page.replace ...
page << }

En tout cas merci de ton explication.

-- 
Cyril Mougel

--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---

Répondre à