Ruby 在jekyll中显示具有标题的数组项

Ruby 在jekyll中显示具有标题的数组项,ruby,jekyll,Ruby,Jekyll,我有以下代码: <nav> <ul> {% for page in site.pages %} {% if page.title %} <li><a href="{{ page.url | prepend: site.baseurl | prepend: site.url }}">{{ page.title }}</a></li> {% endif %} {%

我有以下代码:

<nav>
    <ul>
    {% for page in site.pages %}
      {% if page.title %}
        <li><a href="{{ page.url | prepend: site.baseurl | prepend: site.url }}">{{ page.title }}</a></li>
      {% endif %}
    {% endfor %}
    </ul>
</nav>

    {site.pages%中的页面为%s} {%if page.title%}
  • {%endif%} {%endfor%}
我还没有任何带有标题的页面,但我将来可能会有tidy-html5,我正在使用它输出带有缩进的html,警告ul是空的。没有标题检查,它会输出生成的页面标签或全局页面,如sitemap或rss提要

是否有一种方法可以先过滤阵列,然后在阵列为空时不显示导航,例如:

{% pages = [for page in pages if page.title] %}

{% if pages.length %}
  <nav>
    <ul>
    ....
    </ul>
  </nav>
{% endif %}
{%pages=[对于pages-in-pages,如果是page.title]}
{%if pages.length%}
    ....
{%endif%}
仅获取带有标题的页面:

pages = site.pages.select{ |p| p.title }
因此,您的代码可能类似于:

{% assign pages = site.pages.select{ |p| p.title } %}

{% if pages %}
  <ul>
    {% for page in pages %}
      <li>...</li>
    {% endfor %}
  </ul>
{% endif %}
{%assign pages=site.pages.选择{| p | p.title}%}
{%if页面%}
    {第%页中的第%页}
  • {%endfor%}
{%endif%}
get error
Liquid syntax error(第4行):未知标记“pages”
在我的OP中,我忘记用
%}
结束第一个代码块。使用update编辑。我注意到您的错误,您的解决方案可以工作,但您需要添加
{%assign pages=....%}
,如中所示