'where' 未找到给定要在 CSV 数据中查找的参数的条目
'where' not finding entries given a parameter to look for in CSV data
杰基尔 2.4.0,Mac10.12.5
{% for year_of_interest in (1997..2017) reversed %}
<large_year>{{year_of_interest}}</large_year>
{% for paper in site.data.publications | where,'site.data.publications.Year',year_of_interest %}
<div class="publication_card">
<a class="article_title" href="../../{{paper.Link}}" title="{{paper.Abstract}}">{{paper.Title}}</a>
</div>
<div class="paper_author_container">
<span class="paper_authors">{{paper.Author | upcase}}</span>
<br>
<span class="journal_info">{{paper.Year}}—{{paper.Journal | upcase}}</span>
<button class="btn" data-clipboard-text="{{paper.BibTex}}">
BIBTEX
</button>
</div>
{% endfor %}
{% endfor %}
输入的 CSV 具有这种形状,年份是一个简单的数字:
Title,Link,Abstract,Author,BibTex,Year,Journal,SupplementalLink
背景:我卡住了!我有一个 CSV,其中每一行代表 1997 年到 2016 年论文的出版物元数据。有些年份有很多论文,但每年至少有一篇出版物。我想要一个 header 每年,并在下面发布出版物。不幸的是,where 过滤器在 for 循环中找不到给定年份的任何文章。
当前功能: 在每个 header 下,它显示所有出版物的列表。
期望: 它应该只显示 paper.Year == year_of_interest.
的出版物
提前致谢!
这是 where 过滤器的唯一文档,因为它不是默认的液体过滤器。
https://gist.github.com/smutnyleszek/9803727
site.data.publication.Year
是site.data.publications
的对象我相信你只需要指定"Year"
顺便说一下,这是区分大小写的。
{% for paper in site.data.publications | where, "Year", year_of_interest %}
这里有三个问题:
不能循环过滤
{% for paper in site.data.publications | where,'site.data.publications.Year', year_of_interest %}
不会按预期工作,因为它总是 returns 所有数据。
{% assign filtered = site.data.publications | where,'site.data.publications.Year', year_of_interest %}
{% for paper in filtered %}
会用,但现在不行...
Where filter 过滤一个键
不是{% site.data.publications | where,'site.data.publications.Year', year_of_interest %}
但是:{% site.data.publications | where,'Year', year_of_interest
%}}
即将开始工作...
CSV 数据是字符串
{{ site.data.publications[0].Year | inspect }}
returns "1987" 和双引号表示它是一个字符串,而您的过滤器正在寻找整数 "Year" 值将永远找不到它。您必须改为查找字符串。
要将整数转换为字符串,您可以向其附加一个空字符串。
{% for year_of_interest in (1997..2017) reversed %}
{% comment %} casting an integer to a string {% endcomment %}
{% assign yearAsString = year_of_interest | append:"" %}
{% comment %} filtering datas {% endcomment %}
{% assign selectedEntries = site.data.publications | where: "Year", yearAsString %}
{% for paper in selectedEntries %}
现在,它完成了工作。
注释:
1 - 使用 | inspect
过滤器进行调试,它有助于确定值的类型(字符串、整数、数组、散列)。
2 - 您还可以通过向其添加零将字符串转换为整数:
{% assign numberAsString = "1997" %}
{{ numberAsString | inspect }} => "1997"
{% assign numberAsInteger = numberAsString | plus: 0 %}
{{ numberAsInteger | inspect }} => 1997
杰基尔 2.4.0,Mac10.12.5
{% for year_of_interest in (1997..2017) reversed %}
<large_year>{{year_of_interest}}</large_year>
{% for paper in site.data.publications | where,'site.data.publications.Year',year_of_interest %}
<div class="publication_card">
<a class="article_title" href="../../{{paper.Link}}" title="{{paper.Abstract}}">{{paper.Title}}</a>
</div>
<div class="paper_author_container">
<span class="paper_authors">{{paper.Author | upcase}}</span>
<br>
<span class="journal_info">{{paper.Year}}—{{paper.Journal | upcase}}</span>
<button class="btn" data-clipboard-text="{{paper.BibTex}}">
BIBTEX
</button>
</div>
{% endfor %}
{% endfor %}
输入的 CSV 具有这种形状,年份是一个简单的数字:
Title,Link,Abstract,Author,BibTex,Year,Journal,SupplementalLink
背景:我卡住了!我有一个 CSV,其中每一行代表 1997 年到 2016 年论文的出版物元数据。有些年份有很多论文,但每年至少有一篇出版物。我想要一个 header 每年,并在下面发布出版物。不幸的是,where 过滤器在 for 循环中找不到给定年份的任何文章。
当前功能: 在每个 header 下,它显示所有出版物的列表。
期望: 它应该只显示 paper.Year == year_of_interest.
提前致谢!
这是 where 过滤器的唯一文档,因为它不是默认的液体过滤器。
https://gist.github.com/smutnyleszek/9803727
site.data.publication.Year
是site.data.publications
的对象我相信你只需要指定"Year"
顺便说一下,这是区分大小写的。
{% for paper in site.data.publications | where, "Year", year_of_interest %}
这里有三个问题:
不能循环过滤
{% for paper in site.data.publications | where,'site.data.publications.Year', year_of_interest %}
不会按预期工作,因为它总是 returns 所有数据。
{% assign filtered = site.data.publications | where,'site.data.publications.Year', year_of_interest %}
{% for paper in filtered %}
会用,但现在不行...
Where filter 过滤一个键
不是{% site.data.publications | where,'site.data.publications.Year', year_of_interest %}
但是:{% site.data.publications | where,'Year', year_of_interest
%}}
即将开始工作...
CSV 数据是字符串
{{ site.data.publications[0].Year | inspect }}
returns "1987" 和双引号表示它是一个字符串,而您的过滤器正在寻找整数 "Year" 值将永远找不到它。您必须改为查找字符串。
要将整数转换为字符串,您可以向其附加一个空字符串。
{% for year_of_interest in (1997..2017) reversed %}
{% comment %} casting an integer to a string {% endcomment %}
{% assign yearAsString = year_of_interest | append:"" %}
{% comment %} filtering datas {% endcomment %}
{% assign selectedEntries = site.data.publications | where: "Year", yearAsString %}
{% for paper in selectedEntries %}
现在,它完成了工作。
注释:
1 - 使用 | inspect
过滤器进行调试,它有助于确定值的类型(字符串、整数、数组、散列)。
2 - 您还可以通过向其添加零将字符串转换为整数:
{% assign numberAsString = "1997" %}
{{ numberAsString | inspect }} => "1997"
{% assign numberAsInteger = numberAsString | plus: 0 %}
{{ numberAsInteger | inspect }} => 1997