2015-12-26 1 views
0

Je construis un site Web avec Middleman et en essayant d'accéder aux données de paires spécifiques clé-valeur dans une séquence de YAML par une partielle haml, comme suit:Sélectionner des éléments spécifiques de séquence YAML dans haml

yaml

# people.yml 

- jack: 
    fruit: Apples 
    veg: Cabbage 
- jill: 
    fruit: Oranges 
    veg: Spinach 

haml

-# index.html.haml 

= partial "some_partial", 
    locals => { :fruit => data.people.jack.fruit } 

Pour une raison quelconque - jack renvoie une erreur «méthode non définie». Si je supprime le tiret, et donc la séquence, je peux évidemment accéder à fruit bien. Je suppose que les moyens de séquence - jack est imbriqué plus profond que juste jack. Si oui, imbriqués dans quoi?

La raison pour laquelle j'ai cette configuration est parce que j'appelle l'ensemble de la séquence dans une boucle sur d'autres pages. Mais dans certains endroits, je veux juste des extraits de certains articles.

La question courte: comment accéder à des paires clé-valeur spécifiques dans une séquence yaml dans haml?

+1

Il est pas 'jack' est imbriqué plus profond , c'est juste qu'on y accède par séquence, par exemple 'les gens [0]'. – SteveTurczyn

+0

@SteveTurczyn Je vois, merci. Je vais tester quand je peux, mais cela signifie-t-il que chaque élément ne peut être consulté qu'en fonction de l'endroit où il est indexé, c'est-à-dire. 0, 1, 2 ...? – lukebm

Répondre

3

Vous pouvez structurer votre YAML comme suit ...

# people.yml 

- jack: 
    fruit: Apples 
    veg: Cabbage 
- jill: 
    fruit: Oranges 
    veg: Spinach 

imbriquant les fruits et légumes vous donne la relation de people.jack.fruit

+0

Merci pour le conseil. Je supposais que c'était déjà le cas que la boucle correspondait aux données correctes – lukebm

+1

La structure originale était équivalente à '['' jack '=> nil,' fruit '=>' Pommes ',' veg '=>' Chou '}, {' jill '=> nil,' fruit '=>' Oranges ',' veg '=>' Épinard '}] 'c'est-à-dire un tableau de deux hachages. Boucler le tableau vous permet d'accéder à toutes les données 'fruit' et à toutes les données' veg' mais ne fait pas partie de l'explication sous un nom de personne. – SteveTurczyn

+0

'data.people.jack.fruit', avec' fruit' correctement imbriqué dans '- jack:', comme ci-dessus, renvoie toujours 'méthode non définie'. 'data.people [0] .jack.fruit', cependant, fonctionne bien. Je supposais '- jack:', avec le tiret, agissait comme la clé pour ses éléments imbriqués et donc pensé que je pouvais simplement sélectionner 'jack'. Cependant, il semble que le '-' indique simplement l'élément de séquence contenant 'jack:' dans le tableau 'people', et est donc séparé de' jack'. Il semble donc que vous deviez sélectionner l'élément de tableau, par exemple. '[0]', et ensuite, s'il y a des éléments imbriqués dans '[0]', sélectionnez la touche appropriée, par ex. 'jack'. Est-ce la réponse? – lukebm