液体模板在自定义块中获取令牌

时间:2013-10-23 17:44:56

标签: ruby jekyll liquid redcarpet

我正在尝试使用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的{​​{1}} myblock功能可用render。我认为tokens会抓住这个,但当我puts tokens时会输出[]

谢谢

1 个答案:

答案 0 :(得分:1)

render Liquid::Block方法返回开始和结束标记之间的文本。所以只需将渲染方法更改为:

def render(context)
  p super
end