我正在尝试让 Markdown 与 .erb 很好地配合使用。我想使用 high_voltage 来渲染用 Redcarpet 解析的 markdown 页面(或带有 markdown 部分的普通 .html.erb 文件),并且正在努力让它们一起工作。
目前,我有一个名为的初始化程序markdown_template_handler.rb
,其中包含以下代码:
class MarkdownTemplateHandler
def erb
@erb ||= ActionView::Template.registered_template_handler(:erb)
end
def call(template)
compiled_source = erb.call(template)
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML)
"#{markdown.render(compiled_source.source).inspect}.html_safe;"
end
end
ActionView::Template.register_template_handler(:md, MarkdownTemplateHandler.new)
但是它在第 7 行失败,compiled_source = erb.call(template)
错误代码显示“参数数量错误(给定 1,预期 2)”
我查看了ERB Ruby 文档,但据我了解,调用方法是新方法的派生方法,它只需要一个参数,即文本。但是,当我尝试仅在快速 Rails 控制台会话中使用它时,它还需要两个参数。
当我从上面的代码中删除解析 erb 的要求时,一切都按预期工作,所以我认为这与 Redcarpet 不工作没有任何关系。
我正在使用 Rails v6.0.0.rc1 & Ruby v2.5.3p105
任何帮助表示赞赏。
编辑
进一步的研究使我找到了Rails 6.0 ERB ActionView 模板处理程序。这个处理程序的调用方法确实需要两个参数,模板和源。也就是说,在Rails 5.2.3 中,ERB Action View 模板处理程序调用方法只需要一个参数,即模板。
有人可以指出我在这种情况下找出来源的方向吗?我找不到它的文档。