Жидкие шаблоны получают токены в пользовательском блоке
Я пытаюсь построить пользовательский блок, используя 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