2009-03-10 4 views
3

J'ai un champ de texte avec l'id "foo" qui existe parfois et parfois non. Si cela existe, je voudrais remplir une certaine valeur.RJS: Vérifier l'élément de page existant?

Comment faites-vous cela en utilisant RJS (en Rails 2.2)?

J'ai essayé et il ne fonctionne pas:

if page[:foo] 
    page[:foo].value = "bar" 
end 

Je reçois

TypeError: Null Value if the textfield doesn't exist

.

Répondre

6

Je suis venu sur ce à plusieurs reprises où j'ai un élément conditionnel qui doit être agi s'il existe. L'utilisation de page.select évite l'erreur Null Value.

page.select('#dom_object_id').each do |element| 
    element.value = "bar" 
    end 

Je l'ai mis dans mon fichier * .js.rjs. Lorsque la sélection envoie un tableau vide à chacun, elle ne renvoie rien à la place de l'erreur TypeError que vous obtiendriez lors de la sélection directe par ID lorsque aucun objet DOM avec l'ID correct n'est sur la page.

+0

Merci beaucoup pour la solution RJS! – Javier

1

Je ne pense pas que vous pouvez de RJS. Pour contourner le problème, vous pouvez simplement appeler une méthode javascript de RJS qui vérifie si l'élément existe.

page << "update_foo('#{my_value}');" 

Javascript ..

function update_foo(val) 
{ 
    if($('foo') != undefined) 
    { 
    $('foo').value = 'bar'; 
    } 
} 

Modifier

fixe la partie rubis ..

+0

Fonctionne comme un charme (sans compter qu'il n'est pas nécessaire d'utiliser "! = Undefined"). Tant qu'il n'y a pas de solution dans RJS, ce serait ma solution. – Javier

Questions connexes