3

我有一个嵌套哈希:

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

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

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

并得到:

foo

但是,这不适用于 Liquid :(

如果我做:

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

我可以:

{{ config }}

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

{{ config[:KeyA] }}

结果一无所获:(

Liquid 支持这个吗?如果不是 ERB 有什么替代品支持这一点,最好允许我自定义替换标签(我不能使用 ERB,因为我在包含<%标记的 ASP 文件上运行它)

4

4 回答 4

1

使用点,

例如:

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

输出:

 => "33"
于 2011-03-12T15:35:17.313 回答
0

最后使用了erubis

于 2010-09-14T16:51:46.460 回答
0

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

于 2010-12-25T12:05:26.800 回答
0

采用deep_stringify_keys!

Liquid 似乎在将符号作为嵌套对象的键方面存在问题。

于 2017-05-13T09:08:32.700 回答