比较陌生,最近完成了 Hartl 的 Rails 教程,现在正在开始我的第一个成熟的项目。 我有兴趣添加到我的 Web 应用程序中的是类似于 SO 中的文本输入功能,您可以在其中键入并直接查看文本的结果。 在对SO进行了一些挖掘之后,我决定使用gem bluecloth
,这是在Ruby中实现的Markdown,但现在有以下问题:
- 我不确定如何将
bluecloth
输出的内容绑定到form_for
帮助程序。 我的理解是您可以通过函数html = BlueCloth.new(str).to_html()
转换为字符串,但是当您将文本字段作为form_for
的一部分时,我不确定该怎么办,我应该在哪里插入蓝布部分? 换句话说,我仍然对在一个框中键入并看到该项目显示在页面上其他地方的魔力感到有些困惑。 - WMD栏按钮项目和功能是否包含在Markdown编辑器(例如蓝布)中,还是必须手动构建? 如果是这样,我如何在您键入时获得粗体按钮以在编辑器中显示"****"之类的内容?
感谢您的帮助!
正如评论所指出的,Markdown是一种像HTML一样的标记语言,所以要做所见即所得并不容易。
可能有两种方法可以获得这种功能。
服务器端
将您的降价文本发布到服务器并让服务器返回 HTML。 我在 Python 中做了很多,但对于 Ruby 来说,这个 SO 答案建议 maruku。 此方法的缺点是,每次要查看预览时都需要服务器请求,然后通过某种方式将其集成回 UI 中,而不会中断用户。Stackoverflow将这种方法与WMD编辑器和服务器上的一些C#一起使用。
客户端
另一种选择是使用客户端库来获取您的降价"代码"并生成 html,然后您可以使用 javascript 将其集成到您的页面中。 这方面的一个例子是迪林格。 这使用文本区域和类似摊牌的东西在浏览器中呈现 HTML。 我在我正在开发的所见即所得的Markdown编辑器中更进一步地采用了这种方法,称为demarcate.js
或者... 沟降价
评论已经建议了所见即所得的替代编辑...其中大多数不是降价编辑器,而是最后生成 HTML 的富文本编辑器。TinyMCE和wysihtml5是不错的选择,我之前也使用过CKeditor并取得了一些成功 - 它在最新版本中有一个很酷的"就地"功能,这启发了我上面的Markdown编辑器。