中间人:从数据文件渲染降价时未定义的方法“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
模板:
- 直接用 HAML 编写的 Markdown link,通过 HAML 的 markdown 过滤器呈现
- 从数据中引用
answerA
HTML link 直接写入
- 从具有相同 link 的数据中引用
answerB
,使用 markdown 语法编写
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
我正在使用数据文件中编写的 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
模板:
- 直接用 HAML 编写的 Markdown link,通过 HAML 的 markdown 过滤器呈现
- 从数据中引用
answerA
HTML link 直接写入 - 从具有相同 link 的数据中引用
answerB
,使用 markdown 语法编写
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