你真的希望你的客户能够写ERB吗?这非常危险,他们可以使用ERB中的任何Ruby函数,包括内核功能。让一个简单的
模板系统
,可以是自定义的,也可以是现有的。例如,您可以使用
Liquid
(来自Shopify),提供一些自定义标签,这样他们就不需要所有的样板,只需要
{% dosomething 'partial', 'img1', 'img2' %}
,然后首先将液体转换为普通文本,然后将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
你已经准备好了