Жидкие шаблоны получают токены в пользовательском блоке

Я пытаюсь построить пользовательский блок, используя 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 доступен myblock"s render функция. я думал tokens фиксирует это, но когда я puts tokens это выводит []

Благодарю вас

1 ответ

Решение

render метод Liquid::Block возвращает текст между начальным и конечным тегами. Так что просто измените ваш метод рендеринга следующим образом:

def render(context)
  p super
end
Другие вопросы по тегам