中间人:从数据文件渲染降价时未定义的方法“link_to”

Middleman: undefined method `link_to' when rendering markdown from data file

我正在使用数据文件中编写的 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)

在我尝试渲染写在数据文件中的 markdown link 之前,一切正常。

下面是我的 faq.haml 模板:

faq.haml:

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

前 2 links 正确渲染,但 answerB 中的降价 link 抛出以下错误:

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 无法转换降价 link 而 "asked" 通过引用数据文件的自定义帮助程序这样做,但是当直接在 HAML 中使用相同的语法时它是否正确?可以做什么,以便 = markdown(data.faq.dog.answerB) 中的降价 link 正确呈现?

Ps。我的最终目标是引用已在单独的 data 文件中定义的 links,但我认为为了实现该目标,必须首先解决这个问题。

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

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

Source