On 6/14/07, Cyril Mougel <[EMAIL PROTECTED]> wrote:
> 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.
>

Pour retour d'information, j'ai réussi à implémenter ce que je veux
avec le bout de code suivant :

page<< "if ($('errorExplanation') == 'undefined'){"
page.insert_html :top, 'form_add', '<div id="new">coucou</div>"
page<< "} else {"
page.replace 'new', '<div id="new">au revoir</div>"
page << "}"

Je met ce nouveau code, car celui-ci fonctionne et pas l'autre.


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