Jekyll使用Ruby从url中提取文件名

时间:2017-07-02 19:41:45

标签: ruby jekyll liquid

我正在尝试使用此ruby代码段从Jekyll上的网址中提取文件名:

{% assign filename = page.url.split('/')[-1] | replace: '.html', '.md' %}

如果我只是使用:

{% assign filename = page.url | replace: '.html', '.md' %}

我使用替换的文件类型返回了网址,但我的.split('/')[-1]似乎无效。

我尝试在独立ruby中运行以下内容以确保我的语法正确,并按预期返回bird

"cat/dog/b­ird".split­('/')[-1]

为什么我的Jekyll实例中的语法不一样?是page.url不是字符串,还是别的什么?

1 个答案:

答案 0 :(得分:2)

问题是将ruby代码与Liquid标签混合。

要从Jekyll中的网址中提取文件名,您可以使用纯粹的Liquid模板过滤器,使用您尝试过的等价物:

  • .split­('/') - > | split: '/'
  • [-1] - > | last

作为自定义网址的示例:

{% assign url_example = "cat/dog/bird.html" %}
{% assign filename = url_example | split: '/' | last | replace: '.html', '.md' %}
{{filename}}

输出:

bird.md