2011-05-10 26 views
5

Liquid ile nasıl özyinelemeyi yapacağımı anlamaya çalışıyorum. Menü oluşturma konusunda kullanıcılara tam kontrol vermek istediğim bir uygulamam var. Bununla birlikte, menü bir ağaç tarafından tanımlanır, bu nedenle Sıvı içinde özyinelemeli işlevlere duyulan ihtiyaç.Sıvı İşaretleme/Sıvı Şablonlarında Özyineleme

Bunun için nasıl giderim? Bazı okuma yapıyor sonra ben bu şekilde mücadele düşünüyordum:

dahil

bu şekilde include kullanmayı düşünüyorum:

<ul id='site_nav' class='nav'> 
    {{ include 'menu_item' with menu_items }} 
</ul> 

Ve kısmi menu_item şudur: Bununla birlikte, kullanıcı düzenlenebilir olduğundan, bir veriden kısmi yükler yapmak için Sıvıyı kesmemiz gerekir. tabanı. Bu çalışmanın çok daha fazla zaman alacağından, önce bu sorunu daha önce kimsenin çözüp görmediğini sormak istedim.

  • Daha önce bu sorunu çözdüyseniz, bir şeyi nasıl yinelemeli olarak işlediniz ve kullanıcının düzenlenebilir olmasına nasıl izin verdiniz?
  • Daha önce bununla uğraşmadıysanız, almamızı nasıl öneriyorsunuz? Yukarıda anlattığım şekilde mi?

Şimdiden teşekkürler! Ben uyguladık

https://github.com/Shopify/liquid/blob/master/lib/liquid/file_system.rb

:

cevap

0

Aslında DB'den partials yüklemek için Liquid 'hack' gerekmez, sadece daha fazla bilgi için aşağıdakileri okuyun, sağlanan dosya sistemi sınıfları uzatmak Kendimden önce bu şekilde sıvı al ve Ruby'nin yolunda olduğunu biliyorsan, özellikle zor olmadığına kefil olabilirim.

Yinelemeye gelince, Sıvı muhtemelen onu sınırlamayacaktır (şablon örnekleriniz sadece çalışmalıdır), ancak oluşturma işleminizi bir Timeout :: zaman aşımıyla (aşağıdaki bağlantıya bakın) kaydırmam. Sonsuza kadar devam et.

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/timeout/rdoc/Timeout.html