2012-08-13 37 views
1

考虑以下解析的模板和循环其root.nodelist:列出液体模板中的所有节点?

text = '{% if true %}{{ "poland" | capitalize }}{% else %}{{ "portugal" | capitalize}}{% endif %}' 
template = Liquid::Template.parse(text) 
template.root.nodelist.each { |node| p node } 

只打印:

Portugal 

(而不是波兰)

怎么会一个列表中的所有节点(包括液体变量,标签等)从模板?特别是那些内部的if/else逻辑?

回答

0

我是不是真的能找到一个直接的方式来访问的条件块,但我用一种变通方法的方法添加到类用下面的代码

def b 
    @blocks 
end 

,然后使用这个代码

template.root.nodelist[0].b.each { |a| p a.attachment[0].name } 

我能找到你正在寻找

名单