Rails - 使用markdown

时间:2015-08-13 17:09:09

标签: ruby-on-rails ruby markdown erb

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

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

这有可能吗? kramdown允许你使用块级HTML标签(div,p,pre,...),所以这可能会有用吗?

1 个答案:

答案 0 :(得分:3)

您真的希望您的客户能够编写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

你准备好了你的文字