2013-10-23 26 views
1

我正在嘗試使用Liquid Templating構建自定義塊。 以下是我的代碼:液體模板在自定義塊中獲取令牌

module MyModule 
    module Blocks 
     class MyBlock < Liquid::Block 

      def initialize(tag, markup, tokens) 
       super 
       @tag = tag 
       @tokens = tokens 
       @markup = markup 
      end 

      def render(context) 
       p @tokens 
      end 

     end 
    end 
end 

Liquid::Template.register_tag('myblock', MyModule::Blocks::MyBlock) 

而且在我的模板,我有以下代碼:

{% for i in mypages %} 
    {% myblock %} {{ i.title }} {% endmyblock %} 
{% endfor %} 

我的問題是如何獲取這是myblock標籤之間傳遞的所有內容。即如何使i.title可用於myblockrender功能。我想tokens抓住了這個,但是當我puts tokens它輸出[]

謝謝

+1

我沒有得到的答案在這裏,但在調試它,提取'{%myblock%} ....方面遠遠超出了'for'循環並將其直接放入帖子/頁面中,並使用靜態值:{%myblock%},這是我的塊{%endmyblock%}'。這樣你就知道你應該期待什麼。 – tamouse

回答

1

Liquid::Blockrender方法返回的開始和結束標記之間的文本。因此,只要改變你的渲染方法是:

def render(context) 
    p super 
end