2016-11-16 9 views
2

私の下のコードが部分的に失敗する理由を理解できません。私はジキルのリキッドタグを作成しようとしています。クラスメンバー "text"が設定されている間、メンバー "xyz"はまったく設定されません。しかし、なぜ?上記の出力は、次のRuby:なぜ私のメンバーは初期化に設定されていませんか?

{% my_tag de 1234 %} 

を呼んで

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) 

Output de 1234 HELLO 

Output de 1234 

私は次のように、同様に "HELLO" が存在することになると予想

私は何を欠場しますか?

元のコードはthe Liquid class is hereです。

+0

コードから判断していない「出力デ1234ハロー」 。 –

+0

@SergioTulentsevいいえ、これは私が上に書いたのとまったく同じです。引数は完全な文字列として扱われます。自分で議論をLiquidと分けなければなりません(人々は言う)。 – Christian

+0

出力#{@ text}#{@ xyz} "を"出力#{@ text} '#{@ xyz}' "に変更するとどうなりますか? –

答えて

2

あなたのコードはRubyの2.1.5および液体-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" 
+0

CLIから同じ出力を実行していることを確認できます。ジキルと組み合わせて使うとまだ壊れています。 – Christian

関連する問題