在Jekyll中以CSV格式对数据进行排序时遇到问题(无法对空对象进行排序)

时间:2019-08-05 02:17:03

标签: csv jekyll liquid

我有一个非常简单的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

0 个答案:

没有答案