【问题标题】:Ruby Liquid templating nested hashesRuby Liquid 模板化嵌套哈希
【发布时间】:2010-09-14 16:30:29
【问题描述】:

我有一个嵌套哈希:

{
  :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,因为我在包含 &lt;% 标记的 ASP 文件上运行它)

【问题讨论】:

  • 在第一个代码块中,你的意思是:KeyA而不是KeyA
  • 啊,很好看,还有其他的。 更正

标签: ruby erb liquid


【解决方案1】:

使用点,

例如:

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

输出:

 => "33"

【讨论】:

    【解决方案2】:

    最后使用erubis

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        使用deep_stringify_keys!

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-22
          • 2019-02-21
          • 2019-08-08
          • 2021-02-03
          • 1970-01-01
          相关资源
          最近更新 更多