0

我正在使用在数据文件中编写的 Markdown 使用 Middleman 静态页面生成器在 HAML 模板中呈现 HTML。

我的数据文件,data/faq.yaml如下所示:

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!

为了将此降价转换为 HTML,我使用了以下定义的自定义帮助程序config.rb

helpers do
    def markdown(text)
        Tilt['markdown'].new { text }.render
    end
end

然后我在我的 HAML 模板中使用它,如下所示:

= markdown(data.faq.dog.answerA)

一切正常,直到我尝试呈现写入数据文件的降价链接。

下面是我的faq.haml模板:

  • 直接用 HAML 编写的 Markdown 链接,通过 HAML 的 markdown 过滤器呈现
  • answerA使用直接编写的 HTML 链接引用from 数据
  • answerB使用降价语法编写的具有相同链接的数据引用

faq.haml

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

前 2 个链接正确呈现,但 markdown 链接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)正确渲染中的降价链接?

附言。我的最终目标是引用已经在单独data文件中定义的链接,但我认为首先解决这个问题对于实现该目标是必要的。

4

1 回答 1

0

应用上下文需要传递给 Tilt。

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

来源

于 2017-06-12T08:23:50.773 回答