Ruby Liquid использует шаблоны вложенных хэшей

У меня есть вложенный хэш:

{
  :KeyA => {
            :KeyB => "hello",
            :KeyC => {
                      :KeyD => "foo",
                      :KeyE => "bar"
                    }
          }
}

если я передам это ERB, я могу сделать:

<%= config[:KeyA][:KeyC][:KeyD] %>

и получить:

foo

Однако это не работает с Liquid :(

If I do:

Liquid::Template.parse(template).render(Hash["config" => myhash ])

Я могу сделать:

{{ config }}

и я распечатываю псевдоджсон сверху, но

{{ config[:KeyA] }}

ни к чему не приводит :(

Поддерживает ли Liquid это? Если нет, то какие существуют альтернативы ERB, которые поддерживают это и, желательно, позволяют мне настраивать замещающие теги (я не могу использовать ERB, потому что запускаю его в файле ASP, который содержит разметку <%)


person Andrew Bullock    schedule 14.09.2010    source источник
comment
В первом блоке кода вы имеете в виду :KeyA, а не KeyA?   -  person Andrew Grimm    schedule 15.09.2010
comment
ну хорошо подмечено, и другие. исправлено   -  person Andrew Bullock    schedule 15.09.2010


Ответы (4)


Используйте точки,

e.g.:

Liquid::Template.parse("{{ a[0].b[2].c  }}").render('a' => [{'b'=>[1,2,{'c'=>33}]}])

Вывод:

 => "33"
person Tomasz    schedule 12.03.2011

использовал erubis в конце

person Andrew Bullock    schedule 14.09.2010

У меня была такая же проблема (импорт объекта yaml в хэш) и нормально работать было невозможно. Наконец я решил использовать erubis. Есть жизнь за пределами Liquid, а также другие шаблонизаторы. Вы можете прочитать отличный пост на http://www.hokstad.com/mini-reviews-of-19-ruby-template-engines.html

person xbelanch    schedule 25.12.2010

используйте 1_

Кажется, у Liquid есть проблемы с символами в качестве ключей для вложенных объектов.

person glebtv    schedule 13.05.2017