代码之家  ›  专栏  ›  技术社区  ›  Andrew Bullock

Ruby液体模板嵌套哈希

  •  3
  • Andrew Bullock  · 技术社区  · 14 年前

    我有一个嵌套哈希:

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

    如果我把这个传给ERB我可以:

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

    获得:

    foo
    

    但是,这不适用于液体:(

    如果我这样做了:

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

    我能做到:

    {{ config }}
    

    我把上面的伪json打印出来了,但是

    {{ config[:KeyA] }}
    

    没有结果:(

    液体支持这个吗?如果没有什么替代ERB,有没有支持这一点,最好允许我自定义替换标签(我不能使用ERB,因为我运行在一个ASP文件,其中包含 <%

    4 回复  |  直到 14 年前
        1
  •  1
  •   Tomasz    14 年前

    使用圆点,

    例如。:

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

     => "33"
    
        2
  •  0
  •   Andrew Bullock    14 年前

    习惯于 erubis 最后

        3
  •  0
  •   xbelanch    14 年前

    我也遇到了同样的问题(将yaml对象导入散列),不可能正常工作。最后我决定用erubis。在液体之外还有生命,还有另一个模板。你可以在 http://www.hokstad.com/mini-reviews-of-19-ruby-template-engines.html

        4
  •  0
  •   glebtv    8 年前

    使用 deep_stringify_keys!