2017-05-29 18 views
0

私は、Middleman静的ページジェネレータを使用してHAMLテンプレートでHTMLをレンダリングするためにデータファイルに書かれたMarkdownを使用しています。私のデータファイル、data/faq.yamlは次のようになりますMiddleman:データファイルからマークダウンをレンダリングするときに未定義のメソッド `link_to '

:HTMLにこの値下げを変換するには

dog: 
    question: I want to know more about a dog. 
    answerA: (HTML in data) Just <a href="https://google.com">Google</a> it! 
    answerB: (Markdown link in data) Just [Google](https://google.com) it! 

、私はconfig.rbで定義されたカスタムヘルパーを使用しています:

その後、私は私のHAMLに使用
helpers do 
    def markdown(text) 
     Tilt['markdown'].new { text }.render 
    end 
end 

このようなテンプレート:

= markdown(data.faq.dog.answerA) 

すべてが動作します私がデータファイルに書かれたマークダウンリンクをレンダリングしようとするまで、間違っていました。以下は

と私のfaq.hamlテンプレートです:からanswerBに直接

  • 参考書かれたHTMLリンクを持つデータからHAMLの値下げのフィルターを通してanswerAから
  • リファレンスをレンダリングHAMLに直接書き込ま

    • マークダウンリンク、マークダウン構文で書かれた同じリンクのデータ

    faq.haml

    .answer 
        :markdown 
         (HAML) Just [Google](https://google.com) it! 
        = markdown(data.faq.dog.answerA) 
        = markdown(data.faq.dog.answerB) 
    

    第2のリンクはpropelyレンダリングが、answerBでマークダウンリンクは、次のエラーがスローされます。

    undefined method `link_to' for #<Object:0x000000044f9e18> 
    

    トレースバック:

    /home/myself/.rvm/gems/ruby-2.4.0/gems/middleman-core-4.2.1/lib/middleman-core/renderers/kramdown.rb: in convert_a 
        48.  scope.link_to(content, link, attr) 
    

    なぜKramdownは尋ねられたとき、「マークダウンリンクに変換することができません"データファイルを参照するカスタムヘルパーを介して行うが、同じ構文がHAMLで直接使用されている場合は適切に行うか? = markdown(data.faq.dog.answerB)のマークダウンリンクが正しくレンダリングされるように、何ができるのですか?

    ps。私の最終目標は、すでに別のdataファイルで定義されているリンクを参照することですが、この目標を達成するためにはまずこの問題を解決する必要があると思います。

  • 答えて

    0

    アプリコンテキストをTiltに渡す必要があります。

    def markdown(text) 
        Tilt['markdown'].new(context: @app) { text }.render 
    end 
    

    Source

    関連する問題