我有一个非常简单的CSV格式的数据文件,用于存储艺术家的画作:
# data/spatial.csv, truncation of sample data (many more lines than this)
year,image,dimension,medium
1980, IMG-1006-copy.jpg, 40 x 44, oil on canvas
1979, IMG-1008-copy.jpg, 48 x 40, oil on canvas
1998, IMG-1010.jpg, 42 x 40, oil on canvas
在我的Liquid / Jekyll模板文件中,我可以执行以下操作并获取此数据的格式化列表。现在以一种简单的形式进行测试:
# where site.data[page.portfolio] = site.data.spatial
{% assign this_section = site.data[page.portfolio] %}
{% assign section = this_section %}
<ol>
{% for art in section %}
<li>
<ul>
<li>{{ art.year | strip }}</li>
<li>{{ art.image | strip }}</li>
<li>{{ art.dimension | strip }}</li>
<li>{{ art.medium | strip }}</li>
</ul>
</li>
{% endfor %}
</ol>
在上面的状态下,这很好用。我想按年顺序整理这些画,最新的优先。在上面的变量声明中添加一个sort
过滤器后,就会出现渲染错误,
{% assign this_section = site.data[page.portfolio] %}
{% assign section = this_section | sort: 'year' %}
# Liquid Exception: Liquid error (line 11): Cannot sort a null object. in /_layouts/item.html
#Error: Liquid error (line 11): Cannot sort a null object.
我在这里干什么?我尝试过使用带引号和不使用引号的排序过滤器,还尝试过对不同的列进行排序,以防数字不如我想的那样可排序,并且我尝试以不同的方式声明变量。
我阅读过较早的文档,其中说来CSV文件中的数据被视为字符串,而其他人则说集合现在是对象。哪个是对的?
好吧,这是{{ section | inspect }}
的输出:
{"year"=>"1980", "image"=>" IMG-1006-copy.jpg", "dimension"=>" 40 x 44", "medium"=>" oil on canvas"}, {"year"=>"1979", "image"=>" IMG-1008-copy.jpg", "dimension"=>" 48 x 40", "medium"=>" oil on canvas"}, {"year"=>"1998", "image"=>" IMG-1010.jpg", "dimension"=>" 42 x 40", "medium"=>" oil on canvas"}]
我正在使用Ruby 2.4.0运行Jekyll 3.8.6