我有一个像。
的人- name: Foo
activities:
- title: bar1
- title: bar2
和
这样的分配{% assign person = site.data.people | where: "activities.title", "bar1" %}
当我以前每人只有一个活动(没有title属性)时,我可以很容易地使它工作。但是现在我正在与它斗争。
答案 0 :(得分:1)
您无法将Array
传递给where
过滤器。它不会试图通过遍历所有像{"title"=>"bar1"}
这样的哈希来找到所需的值,它只会根据传递的字符串来评估属性。因此,Hash
永远不会等于bar1
。
我的两分钱:
删除activities.name
密钥,简化 people.yml :
注意:两个activities
数组表示相同。
- name: Foo
activities: [ bar1, bar2 ]
- name: Bar
activities:
- bar3
- bar4
现在,您可以使用contains
过滤器检索将bar1作为活动的人员。 contains
过滤strings
或array
过滤["bar1", "bar2"]
{% assign selected = "" | split: "/" %} --> create empty array
{% for people in site.data.people %}
{% if people.activities contains 'bar1' %}
--> add people to array if match is found
{% assign selected = selected | push: people %}
{% endif %}
{% endfor %}