Ruby Liquid模板嵌套哈希

时间:2010-09-14 16:30:30

标签: ruby erb liquid

我有一个嵌套哈希:

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

如果我将其传递给ERB,我可以这样做:

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

并获得:

foo

然而,这对Liquid不起作用:(

如果我这样做:

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

我能做到:

{{ config }}

我从上面打印出伪uzson,但是

{{ config[:KeyA] }}

没有任何结果:(

Liquid支持吗?如果没有ERB支持这个的替代方案,并且最好允许我自定义替换标签(我不能使用ERB,因为我在包含<%标记的ASP文件上运行它

4 个答案:

答案 0 :(得分:1)

使用点,

e.g:

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

输出:

 => "33"

答案 1 :(得分:0)

最后使用erubis

答案 2 :(得分:0)

我遇到了同样的问题(将yaml对象导入哈希)并且无法正常工作。最后我决定使用erubis。除了Liquid之外还有其他生活模板。您可以在http://www.hokstad.com/mini-reviews-of-19-ruby-template-engines.html

阅读优秀的帖子

答案 3 :(得分:0)

使用deep_stringify_keys!

Liquid似乎有符号作为嵌套对象的键的问题。