在集合中捕获项目索引

时间:2014-03-19 01:08:14

标签: ruby liquid

我想知道在Liquid模板中查找数组中项目索引的正确方法是什么,并根据索引选择相关项目。目前我能够计算该值,但它似乎是一个字符串,然后我无法在字符串中找到数组中的其他项目。例如,在CMS中:

{% for site_page in site.pages.all %}
      {% if site_page.id == page.id %}
        {% assign page_index = forloop.index0 %}
        {% capture previous_page_index %}
          {{ page_index | minus: 1 }}
        {% endcapture %}
        {% break %}
      {% endif %}
    {% endfor %}

预期值可以在previous_page_index中找到(在本例中为0)但是,如果我尝试执行site.pages.all[previous_page_index]之类的操作,则不会收到任何输出。如果我使用硬编码索引值执行相同操作:site.pages.all[0]它会产生输出。有没有人知道如何在液体中完成这个?

1 个答案:

答案 0 :(得分:1)

我能说的最好的就是使用{% for item in array limit:1 offset:forloop.index0 %}。例如:

require 'liquid'    
chars = %w[a b c]
names = %w[alpha bravo charlie]
puts Liquid::Template.parse(<<DONE).render( 'chars'=>chars, 'names'=>names )
{% for c in chars %}
  {{c}} is
    {% for n in names limit:1 offset:forloop.index0 %}{{n}}{% endfor %}
{% endfor %}
DONE

......产生......

  a is
    alpha

  b is
    bravo

  c is
    charlie

编辑旁边:哎哟。多么丑陋的诱人语言。我了解其目标,但会给用户带来负担is heinous