2010-07-19 8 views
0

Dans Rails de l'adaptateur RJS,Comment accéder à un tableau via un proxy RJS?

page['id'] // $('id') 

accède à un CSS-id,

page['id'].property // $('id').property 

une propriété de celui-ci. Mais comment puis-je accéder à un index de tableau, par ex.

page.select('ul').value_at(2) // $('id').select('ul')[2] 

Est-il possible de le faire sans écrire:

page << "$('id').select('ul')[2]" 
+0

Si je voulais mettre en œuvre une telle fonction de value_at, où aurais-je début? – giraff

Répondre

2

Vous ne pouvez pas accéder à des tableaux comme celui de RJS mais, quiconque d'entre eux fonctionnerait:

page['id']['firstChild']['nextSibling'] 
page['id'].down(2) 

Génère :

$("id").firstChild.nextSibling; 
$("id").down(2); 

Bien sûr, t La meilleure solution serait d'ajouter une identification css class ou un identifiant d'élément au second élément et de le sélectionner dans votre fichier rjs.

Si vous souhaitez coller à l'aide page.select, vous pourriez mettre en œuvre value_at comme celui-ci (appelé ici choix):

>>> Array.prototype.pick = function(n) { return this[n]; }; 
function() 
>>> ['a', 'b', 'c'].pick(1) 
"b" 
+0

De bonnes façons d'éviter ce problème! Je ne peux toujours pas croire que cette syntaxe plutôt basique n'est pas couverte, mais ok. ((Petite remarque: 2 est le troisième enfant, donc il devrait lire '['firstChild'] ['nextSibling'] ['nextSibling']', ne devrait-il pas?) – giraff

+0

Une classe d'identification ne résout pas ce problème, – giraff

+0

Désolé, vous devez ajouter un identifiant.J'ai édité ma réponse avec une implémentation de 'value_at' que vous pourriez inclure dans votre fichier js pour faire les choses à votre façon – jdeseno