Sinatra 中的嵌套液体模板

Nested Liquid Templates in Sinatra

根据 Sinatra 文档,您可以像这样将液体对象传递到液体模板中

liquid :index, :locals => { :title => "My Sinatra App"}

用于在类似

的模板中呈现

{{title}}

这似乎与嵌套对象不符,例如

liquid :index, :locals => { :foo => { :bar => "baz" }}

不让我在 liquid 模板中引用 bar 的值

{{foo.bar}}

是否有一些特定的方法来构建嵌套的液体对象以传递到视图中?谢谢!

我正在处理同样的问题,我发现如果您使用符号在本地散列中定义子键,您不会得到您可能期望的行为。换句话说:

liquid :index, :locals => { :foo => { :bar => "baz" }}

不会让{{ foo.bar }}如你所愿。你要的是:

liquid :index, :locals => { :foo => { "bar" => "baz" }}

这将使 {{ foo.bar }} 替换为您期望的值 baz

鉴于此行为,这可能是 useful/relevant 后续 SO post:

How to change hash keys from `Symbol`s to `String`s?