Jekyll 使用 Ruby 从 url 中提取文件名
Jekyll extracting filename from url with Ruby
我正在尝试使用此 ruby 片段从 Jekyll 上的 url 中提取文件名:
{% assign filename = page.url.split('/')[-1] | replace: '.html', '.md' %}
如果我只使用:
{% assign filename = page.url | replace: '.html', '.md' %}
我用替换的文件类型取回了 url,但我的 .split('/')[-1]
似乎不起作用。
我在独立 ruby 中尝试 运行 以下内容以确保我的语法正确,并按预期返回 bird
:
"cat/dog/bird".split('/')[-1]
为什么相同的语法在我的 Jekyll 实例中不起作用?是 page.url
不是字符串,还是其他什么?
问题是将 ruby 代码与 Liquid 标签混合。
要从 Jekyll 中的 url 中提取文件名,您可以只使用纯 Liquid 模板过滤器,使用您尝试过的等效项:
.split('/')
-> | split: '/'
[-1]
-> | last
以自定义为例 URL:
{% assign url_example = "cat/dog/bird.html" %}
{% assign filename = url_example | split: '/' | last | replace: '.html', '.md' %}
{{filename}}
输出:
bird.md
我正在尝试使用此 ruby 片段从 Jekyll 上的 url 中提取文件名:
{% assign filename = page.url.split('/')[-1] | replace: '.html', '.md' %}
如果我只使用:
{% assign filename = page.url | replace: '.html', '.md' %}
我用替换的文件类型取回了 url,但我的 .split('/')[-1]
似乎不起作用。
我在独立 ruby 中尝试 运行 以下内容以确保我的语法正确,并按预期返回 bird
:
"cat/dog/bird".split('/')[-1]
为什么相同的语法在我的 Jekyll 实例中不起作用?是 page.url
不是字符串,还是其他什么?
问题是将 ruby 代码与 Liquid 标签混合。
要从 Jekyll 中的 url 中提取文件名,您可以只使用纯 Liquid 模板过滤器,使用您尝试过的等效项:
.split('/')
->| split: '/'
[-1]
->| last
以自定义为例 URL:
{% assign url_example = "cat/dog/bird.html" %}
{% assign filename = url_example | split: '/' | last | replace: '.html', '.md' %}
{{filename}}
输出:
bird.md