我在阅读红地毯的文档时发现了这样一句话:
The Markdown object is encouraged to be instantiated once with the required settings, and reused between parses.
在Rails
应用程序中,最好的方法是什么?
我在红地毯上观看了Ryan Bates的railscast,他在application_helper.rb
中有一个辅助方法,其中每个方法调用都实例化一个新的Redcarpet
对象,如下所示:
def markdown(text)
options = [:hard_wrap, :filter_html, :autolink, :no_intraemphasis, :fenced_code, :gh_blockcode]
Redcarpet.new(text, *options).to_html.html_safe
end
这不是最好的方法吗?谢谢你的建议。
不确定这是否是rails做事的方式,但它似乎很好,并且没有违反POLA或类似规定,所以希望它能满足您的需求。
在config/initializers/
文件夹中创建一个markdown.rb
文件,并使用以下代码片段的一些变体:
class MultiRenderer < Redcarpet::Render::HTML
include Redcarpet::Render::SmartyPants
end
module Paradox
Markdown = Redcarpet::Markdown.new(MultiRenderer)
end
将Paradox
替换为应用程序的名称。您可以向渲染器或markdown实例添加各种选项,如自述文件中所述。我创建的渲染器(MultiRenderer
)内置了smartypants,因此您可以舍入引号和其他
要使用Markdown,只需调用YourApp::Markdown.render(text)
,就可以返回html。您可能需要在此基础上运行html_safe。