2015-11-09 61 views
0

我有一個像在傑基爾(液體)不能得到地方工作

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

而一個分配像

{% assign person = site.data.people | where: "activities.title", "bar1" %} 

當我以前有每人只有一個活動(無people.yml有標題屬性)我可以很容易地使它工作。但現在我正在努力。

回答

1

您無法將Array傳遞給where過濾器。它不會嘗試通過循環遍歷所有哈希像{"title"=>"bar1"}來找到所需的值,它只會根據傳遞的字符串評估屬性。所以,那些Hash將永遠不會等於bar1

我的兩分錢:

簡化people.yml通過刪除activities.name鍵: 注:兩個activities陣列演講是等價的。

- name: Foo 
    activities: [ bar1, bar2 ] 

- name: Bar 
    activities: 
    - bar3 
    - bar4 

您現在可以使用contains過濾檢索已BAR1作爲活動的人。 contains filters strings or array like ["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 %}