在Jekyll(Liquid)无法到达工作地点

时间:2015-11-09 09:13:49

标签: where jekyll liquid assign

我有一个像。

的人
- name: Foo
  activities:
    - title: bar1
    - title: bar2

这样的分配
{% assign person = site.data.people | where: "activities.title", "bar1" %}

当我以前每人只有一个活动(没有title属性)时,我可以很容易地使它工作。但是现在我正在与它斗争。

1 个答案:

答案 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过滤stringsarray过滤["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 %}