Sinatra的嵌套液体模板

问题描述 投票:2回答:1

根据Sinatra文档,您将液体物体传递到液体模板中

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

用于在模板中渲染

{{title}}

例如,这似乎打破了嵌套对象

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

不要让我参考液体模板中的bar值

{{foo.bar}}

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

ruby sinatra liquid
1个回答
2
投票

我正在处理同样的问题,我发现如果你使用符号在locals哈希中定义子键,你就不会得到你可能期望的行为。换一种说法:

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

不会让{{ foo.bar }}做你期望的。你想要的是:

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

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

鉴于此行为,这可能是一个有用/相关的后续SO帖子:

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

© www.soinside.com 2019 - 2024. All rights reserved.