Rails - 将 erb 标签与 markdown 混合

Rails - Mix erb tags with markdown

我希望我的博客网站上的用户能够在文本区域中输入降价文本来制作博文。然后将使用 Redcarpet 或 kramdown 等工具转换此降价文本。现在我还希望用户能够调用布局一些图片的局部视图。所以换句话说,我希望用户能够在他的降价文本之间的任何地方输入以下代码(并且它被解释为 erb 代码)

<%= render partial: "slider", locals: {imgs: ["image1.jpg", "image2.jpg"]} %>

这有可能吗? kramdown 允许您使用块级 HTML 标签(div、p、pre、...),所以也许这可以用于某些优势?

你真的希望你的客户能写ERB吗?这非常危险,他们可以使用 ERB 中的任何 Ruby 函数,包括内核功能。是否允许一个简单的 模板系统 ,无论是自定义的还是现有的。例如,您可以使用 Liquid(来自 Shopify),提供一些自定义标签,这样他们就不需要所有的样板,而只需要 {% dosomething 'partial', 'img1', 'img2' %} 之类的东西,然后您首先将 liquid 转换为普通文本,然后再转换markdown 到 html, 缓存它 并将其显示给用户。一个例子:

# get your customer text from somewhere, like params[:markdown_text]
template = params[:markdown_text]
markdown = Liquid::Template.parse(template).render
html_text = Redcarpet::Markdown.new(renderer, extensions = {}).render(markdown)

puts html_text.to_s # => text with html tags, ensure to use `html_safe` on it in views

您已准备好文本