2014-03-19 78 views
2

我想知道在數組中找到索引的正確方法是在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

最好我可以數字是使用{% 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