jekyll/liquid:给出模板中哈希的密钥访问值

dtb*_*ess 5 liquid jekyll

在jekyll模板中给出以下代码

{% assign resource = site.data.resources | where: "id", page.resource %}
Run Code Online (Sandbox Code Playgroud)

派生以下哈希:

{
  "id"=>"resource-1234", 
  "title"=>"testing", 
  "description"=>"Quis autem vel eum iure reprehenderit qui"
}
Run Code Online (Sandbox Code Playgroud)

如何使用liquid来输出标题键的值?我尝试过以下方法:

{{ resource }}     # outputs the hash
{{ resource.title }}   # nil
{{ resource["title"] }}   # nil
Run Code Online (Sandbox Code Playgroud)

Dav*_*uel 6

实际上,where过滤器返回一个数组.

当您打印此数组时{{ resource }},它只是一个接一个地输出所有项目.在这里它打印你的哈希,这让你认为这resource是一个哈希.

对于调试,您可以使用{{ resource | inspect }}它将返回:

[{"id"=>"resource-1234", "title"=>"testing", "description"=>"Quis ..."}]
Run Code Online (Sandbox Code Playgroud)

在这里你看到括号,你知道这resource是一个数组.

在您的情况下,您知道只有一个(或零)资源链接到您的页面.为了只获取第一个资源哈希,您可以:

{% assign resource = site.data.resources | where: "id", page.resource | first %}
Run Code Online (Sandbox Code Playgroud)

现在{{ resource.title }}回来了testing.

酷不是吗?