Ruby Liquid шаблонные вложенные хэши - PullRequest
3 голосов
/ 14 сентября 2010

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

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

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

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

и получите:

foo

Однако это не работает с жидкостью: (

Если я это сделаю:

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

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

{{ config }}

и я распечатал псевдойсон сверху, но

{{ config[:KeyA] }}

ничего не дает: (

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

Ответы [ 4 ]

1 голос
/ 12 марта 2011

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

например:

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

Вывод:

 => "33"
0 голосов
/ 13 мая 2017

использование deep_stringify_keys!

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

0 голосов
/ 25 декабря 2010

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

0 голосов
/ 14 сентября 2010

используется erubis в конце

...