【问题标题】:Liquid templating get tokens in a custom block液体模板在自定义块中获取令牌
【发布时间】:2013-10-23 17:44:56
【问题描述】:

我正在尝试使用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 它输出[]

谢谢

【问题讨论】:

  • 我这里没有答案,但是在调试方面,将{% myblock %}....for循环中提取出来,并直接放入帖子/页面,并带有一个静态值: {% myblock %} this is my block {% endmyblock %} 。这样你就知道你应该期待什么了。

标签: ruby jekyll liquid redcarpet


【解决方案1】:

Liquid::Blockrender 方法返回开始和结束标记之间的文本。因此,只需将您的渲染方法更改为:

def render(context)
  p super
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-04
    • 2021-09-04
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2011-08-22
    • 1970-01-01
    相关资源
    最近更新 更多