2017-07-02 17 views
0

我试图用这个红宝石片段提取从哲基尔URL中的文件名中提取文件名:杰基尔从URL使用Ruby

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

如果我只是用:

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

我得到返回与替换文件类型的网址,但我的.split('/')[-1]似乎没有工作。

我试图运行在独立的红宝石以下,以确保我的语法是正确的,并且它返回bird预期:

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

为什么不在我的哲基尔情况下相同的语法的工作? page.url不是字符串还是别的?

回答

2

问题是混合红宝石代码与液态标签。

从URL中提取文件名中化身,你可以只使用纯液体模板过滤器,使用你尝试过什么等同:

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

以自定义网址为例:

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

输出:

bird.md