在 Jekyll(Liquid)上无法工作
On Jekyll (Liquid) can't get where working
我有一个people.yml喜欢
- name: Foo
activities:
- title: bar1
- title: bar2
还有一个像
这样的赋值
{% assign person = site.data.people | where: "activities.title", "bar1" %}
当我以前每人只有一个 activity(没有 title 属性)时,我可以轻松地让它工作。但是现在我正在努力。
您不能将 Array
传递给 where
过滤器。它不会像 {"title"=>"bar1"}
这样通过遍历所有哈希来尝试找到所需的值,它只会根据传递的字符串评估 属性。所以,那些 Hash
永远不会等于 bar1
.
我的两分钱:
通过删除 activities.name
键简化 people.yml :
注意:两个 activities
数组表示是等价的。
- name: Foo
activities: [ bar1, bar2 ]
- name: Bar
activities:
- bar3
- bar4
您现在可以使用 contains
过滤器来检索将 bar1 作为 activity 的人。 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 %}
我有一个people.yml喜欢
- name: Foo
activities:
- title: bar1
- title: bar2
还有一个像
这样的赋值{% assign person = site.data.people | where: "activities.title", "bar1" %}
当我以前每人只有一个 activity(没有 title 属性)时,我可以轻松地让它工作。但是现在我正在努力。
您不能将 Array
传递给 where
过滤器。它不会像 {"title"=>"bar1"}
这样通过遍历所有哈希来尝试找到所需的值,它只会根据传递的字符串评估 属性。所以,那些 Hash
永远不会等于 bar1
.
我的两分钱:
通过删除 activities.name
键简化 people.yml :
注意:两个 activities
数组表示是等价的。
- name: Foo
activities: [ bar1, bar2 ]
- name: Bar
activities:
- bar3
- bar4
您现在可以使用 contains
过滤器来检索将 bar1 作为 activity 的人。 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 %}