我正在尝试使用此ruby代码段从Jekyll上的网址中提取文件名:
{% assign filename = page.url.split('/')[-1] | replace: '.html', '.md' %}
如果我只是使用:
{% assign filename = page.url | replace: '.html', '.md' %}
我使用替换的文件类型返回了网址,但我的.split('/')[-1]
似乎无效。
我尝试在独立ruby中运行以下内容以确保我的语法正确,并按预期返回bird
:
"cat/dog/bird".split('/')[-1]
为什么我的Jekyll实例中的语法不一样?是page.url
不是字符串,还是别的什么?
答案 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