2014-03-19 2 views
2

배열에서 항목의 인덱스를 찾는 올바른 방법이 Liquid 템플릿에 있고 인덱스를 기반으로 관련 항목을 선택했는지 궁금합니다. 현재 값을 계산할 수 있지만 문자열로 보인다 및 다음 문자열을 사용하여 배열의 다른 항목을 찾을 수 없습니다. CMS를 예를 들면 : 나는 어떤 출력을 수신하지 site.pages.all[previous_page_index]처럼 뭔가를하려고하면컬렉션의 항목 인덱스 캡처

{% 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 %} 

예상 값은, 그러나 (이 경우 0) 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.

관련 문제