Ruby:为什么我的成员在初始化时没有设置?

时间:2016-11-16 10:23:29

标签: ruby liquid jekyll-extensions

我无法理解为什么我的下面的代码部分失败了。我尝试为Jekyll创建Liquid标签。设置类成员“text”时,根本不设置成员“xyz”。但为什么呢?

module MyModule
  class MyTag < Liquid::Tag
    def initialize(tag_name, text, tokens)
      super
      @text = text
      @xyz = "HELLO"
    end

    def render(context)
      "Output  #{@text} #{@xyz}"
    end
  end
end

Liquid::Template.register_tag('my_tag', MyModule::MyTag)

调用以下内容

{% my_tag de 1234 %}

以上的输出是:

Output de 1234

我预计会有“HELLO”,例如:

Output de 1234 HELLO

我想念什么?

来自the Liquid class is here的原始代码。

1 个答案:

答案 0 :(得分:2)

您的代码似乎可以正常使用Ruby 2.1.5和liquid-3.0.6:

require 'liquid'
module MyModule
  class MyTag < Liquid::Tag
    def initialize(tag_name, text, tokens)
      super
      @text = text
      @xyz = "HELLO"
    end

    def render(context)
      "Output  #{@text} #{@xyz}"
    end
  end
end

Liquid::Template.register_tag('my_tag', MyModule::MyTag)

@template = Liquid::Template.parse("{% my_tag de 1234 %}")
puts @template.render
#=> "Output  de 1234  HELLO"