if ($('new')) devrait suffir
Par contre ce genre de code
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 ne trouve pas ça très propre et comme le propose Jean-François, c  
plus clean de faire une fonction dans une fichier .js et de l'appeler  
avec un page.call
C'est mieux de mettre le code client dans des fichiers JS plutôt que  
de tout mélanger dans le contrôleur. Déjà que le page :update met du  
code de la vue dans le contrôleur (mais je trouve ça plus facile à  
lire que de faire des .rjs pour une ou deux lignes), si en plus on y  
ajoute de la logique client! Pas top.

Seb

On Jun 14, 2007, at 8:29 AM, Cyril Mougel wrote:

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