2015-12-26 1 views
0

Я строй сайт с посредническим и пытаюсь получить доступ к данным из конкретных пар ключа-значения в последовательности YAML через частичный в Haml, следующим образом:Выберите определенные элементы в пределах последовательности YAML в 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 } 

По какой-то причине - jack возвращает ошибку «неопределенного метода». Если я удалю тире и, следовательно, последовательность, я, очевидно, могу получить доступ к fruit штрафам. Я полагаю, что средства последовательности - jack вложены глубже, чем просто jack. Если это так, вложенные в какие?

Причина, по которой у меня эта настройка, заключается в том, что я вызываю всю последовательность в цикле на других страницах. Но в некоторых местах мне просто нужны фрагменты из избранных предметов.

Короткий вопрос: как получить доступ к определенным парам ключ-значение в последовательности ямлов в haml?

+1

Это не то, что 'jack' вложен глубже , это просто, что к нему обращаются по последовательности, например 'Люди [0]'. – SteveTurczyn

+0

@SteveTurczyn Я вижу, спасибо. Я буду проверять, когда смогу, но означает ли это, что каждый элемент может быть доступен только в соответствии с тем, где он индексируется, т.е. 0, 1, 2 ...? – lukebm

ответ

3

Вы можете структурировать YAML следующим образом ...

# people.yml 

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

Вложение фруктов и овощей дает отношение people.jack.fruit

+0

Спасибо за подсказку. Я предположил, что это уже было так, поскольку цикл соответствовал правильным данным. – lukebm

+1

Исходная структура была равнозначной '[{'jack' => nil, 'fruit' => 'Apples', 'veg' => 'Cabbage '}, {' jill '=> nil,' fruit '=>' Oranges ',' veg '=>' Spinach '}], который должен содержать массив из двух хэшей. Цитирование через массив позволит вам получить доступ ко всем «фруктовым» данным и всем файлам «veg», но не проявляет гнездо как под именем человека. – SteveTurczyn

+0

'data.people.jack.fruit', с' fruit' правильно вложенным в '- jack:', как указано выше, по-прежнему возвращает «неопределенный метод». 'data.people [0] .jack.fruit', однако, отлично работает. Я предположил, что '-jack:', с тире, выступал в качестве ключа для своих вложенных элементов, и поэтому подумал, что я могу просто выбрать 'jack'. Тем не менее, кажется, что '-' просто обозначает элемент последовательности, содержащий 'jack:' внутри массива 'people', и поэтому является отдельным от' jack'. Кажется, поэтому вам нужно выбрать элемент массива, например. '[0]', а затем, если есть элементы, вложенные в '[0]', выберите соответствующий ключ, например. 'Jack'. Это ответ? – lukebm

 Смежные вопросы

  • Нет связанных вопросов^_^