我在这里要做的是创建一个Markdown模板,该模板也允许erb。我提供了这种解决方案:
class MarkdownTemplateHandler
def call(template, source)
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML)
compiled_source = erb.call(template, source)
markdown.render(compiled_source).inspect.html_safe
end
private
def erb
@erb ||= ActionView::Template.registered_template_handler(:erb)
end
end
ActionView::Template.register_template_handler(:md, MarkdownTemplateHandler.new)
问题:如果source
包含类似<%= "Hello" %>
的内容,则compiled_source
中的结果为'.freeze; "hello" @outputbuffer.safeappend='
,而不是简单的Hello
。
我想念什么吗?
PS:此示例是使用导轨6创建的。
答案 0 :(得分:0)
我认为您应该安装coderay gem才能了解源代码,这里是the link for coderay gem,
要安装,您可以键入
gem install coderay
这是将其与Redcarpet Gem结合使用的示例代码,您可以将这些代码放在application_helper.rb
下class CodeRayify < Redcarpet::Render::HTML
def block_code(code, language)
CodeRay.scan(code, language).div
end
end
def markdown(text)
coderayified = CodeRayify.new(filter_html: true,
hard_wrap: true)
options = {
fenced_code_blocks: true,
no_intra_emphasis: true,
autolink: true,
lax_html_blocks: true,
}
markdown_to_html = Redcarpet::Markdown.new(coderayified, options)
markdown_to_html.render(text).html_safe
end
然后您可以调用它
<%= markdown(your_markdown_text_variable_here) %>
答案 1 :(得分:0)
对任何可以利用此功能的人:
我无法解决问题中最初提到的问题,但是使用Tilt的另一种方法解决了问题:
# Add Chrome to PATH
chromePATH = r'C:\Program Files (x86)\Google\Chrome\Application'
os.sys.path.append(chromePATH)
# Open chrome browser
os.system('chrome.exe -remote-debugging-port=9014 --user-data-dir="{}"'.format(profilePath))