`
hideto
  • 浏览: 2677795 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

markItUp+rdiscount搭建Rails下可视化Markdown编辑器

    博客分类:
  • Ruby
阅读更多
markItUp是基于jQuery的可视化编辑器,支持Html,Textile,Wiki,Markdown,BBcode等多种标签。而且支持插件化替换各种标签和皮肤,UI效果很好。

自行下载jquery.js,然后从http://markitup.jaysalvat.com/downloads/下载jquery.markitup.js,Basic Markdown set和Simple and neutral skin。

在你的表单页面中加入相应的javascript和css文件,并用一段JavaScript初始化要用markItUp的Textarea:
<%=javascript_include_tag 'jquery' %>
<script type="text/javascript" src="/markitup/jquery.markitup.js"></script>
<script type="text/javascript" src="/markitup/sets/markdown/set.js"></script>
<link rel="stylesheet" type="text/css" href="/markitup/skins/simple/style.css" />
<link rel="stylesheet" type="text/css" href="/markitup/sets/markdown/style.css" />

<script language="javascript">
$(document).ready(function() {
    $('#textarea').markItUp(mySettings);
});
</script>


效果图:


保存Markdown文本到数据库后如何转化成HTML格式展现在页面上?
安装rdiscount即可:
gem install rdiscount

然后在show页面上:
<%= raw RDiscount.new(@question.content).to_html %>

注意:需要对用户恶意输入的<script>等标签做额外处理。比如仿照whitelist html tags做一个blacklist的helper方法:
  DISALLOWED_TAGS = %w(script iframe) unless defined?(DISALLOWED_TAGS)

  def blacklist(html)
    # only do this if absolutely necessary
    if html.index("<")
      tokenizer = HTML::Tokenizer.new(html)
      new_text = ""

      while token = tokenizer.next
        node = HTML::Node.parse(nil, 0, 0, token, false)
        new_text << case node
                    when HTML::Tag
                      if DISALLOWED_TAGS.include?(node.name)
                        node.to_s.gsub(/</, "&LT;")
                      else
                        node.to_s
                      end
                    else
                      node.to_s.gsub(/</, "&LT;")
                    end
      end

      html = new_text
    end
    html
  end

然后就可以这样show content了:
<%= raw blacklist RDiscount.new(@question.content).to_html %>


实现preview功能:
1. 编辑set.js
previewParserPath:	'/questions/preview',

2. 编辑routes.rb
match 'questions/preview' => 'questions#preview'

3. 编辑controller
def preview
  render :text => RDiscount.new(params[:data]).to_html
end

这样就能成功请求后台的rdiscount来parse markdown标签生成preview了,效果:

  • 大小: 29.8 KB
  • 大小: 63 KB
分享到:
评论

相关推荐

    富文本编辑器markitup

    富文本编辑器MarkItUp是一个轻量级且可高度自定义的开源编辑器,主要用于网页开发,让用户在网页上可以方便地编辑和格式化文本。这个编辑器支持多种标记语言,如HTML、Markdown、Textile等,适用于博客、论坛、评论...

    markitup 文本编辑器

    MarkItUp 是一个轻量级且高度可定制的JavaScript文本编辑器,它允许用户在网页上实现类似于Markdown、Textile等标记语言的编辑功能,无需依赖任何服务器端技术。这款编辑器以其灵活性和易用性而受到开发者的欢迎,...

    markitup-chrome-extension:GitHub 的 Markdown 编辑器(基于 markItUp 的 Chrome 扩展!)

    而`markitup-chrome-extension`是一个基于`markItUp`的Chrome浏览器扩展,它为用户提供了在浏览器内直接编辑Markdown的强大功能,使得在GitHub上编写和预览Markdown内容变得更加便捷。 `markItUp`是一个通用的文本...

    15个基于Web的HTML编辑器

    Free Rich Text Editor是一个极其简单易用的HTML可视化编辑器,基于JavaScript,可以非常简单的执行和管理XHTML代码。 9. WMD: The Wysiwym Markdown Editor WMD是一个简单的轻量级HTML编辑器,比较适合使用于博客...

    1.x, markItUp通用标记编辑器 1.x !.zip

    1.x, markItUp通用标记编辑器 1.x ! markItUp 通用标记编辑器 !markItUp 是在jQuery库上构建的JavaScript插件。 它允许你将任何textarea转换为标记编辑器。 Html,Textile,Wiki语法,Markdown,BBcode或者你自

    基于javascript+html实现的在线编辑器

    基于JavaScript+HTML实现的在线编辑器可以提供丰富的编辑功能,例如格式化文本、插入图片、超链接等。 TinyMCE是一个功能强大且灵活的在线编辑器,支持多种浏览器和操作系统。TinyMCE提供了许多插件和主题,用户...

    四款编辑器 总有一款你能用的上

    最后,"markitup"这个名字暗示这可能是一款专注于Markdown语言的编辑器。Markdown是一种轻量级的标记语言,常用于编写文档和博客。MarkItUp可能提供了一个简洁的界面,让用户可以轻松地创建和预览Markdown格式的内容...

    文本编辑器

    通过结合jQuery,这个在线文本编辑器旨在提供一种高效且用户友好的界面,使得用户可以在浏览器环境下进行文本编辑。 【描述】:“体好看” “体好看”可能是指编辑器的界面设计和用户体验。在网页应用中,美观且...

    markItUp Editor v1.1.12-源码.zip

    "markItUp Editor v1.1.12-源码.zip"是一个包含了markItUp编辑器的源代码的压缩文件,版本号为1.1.12。markItUp是一款轻量级、可自定义的JavaScript富文本编辑器,适用于网页开发。这款编辑器允许用户在网页上创建和...

    22个所见即所得编辑器

    20. WYMeditor:WYMeditor 是一个输出干净的 XHTML + SCTRICT 代码的所见即所得编辑器,注重结构与语义,在输出结构化 XHTML 代码方面是最佳方案。它的主要特点是输出干净的 XHTML 代码,注重结构与语义。 21. ...

    markItUp Editor v1.1.12

    jQuery Universal Markup Editor是一个基于jQuery的轻量级的文本编辑器,可实现非常强大的在线文本编辑器功能。可支持html、Wiki、BBScode等编辑格式,具体很强的扩展性,使用非常方便

    jQuery Editor

    2. **基本配置**: 教程会指导如何初始化编辑器,设置初始内容,以及配置按钮和快捷键。 3. **自定义皮肤与标记语言**: 展示如何创建自定义皮肤,以及如何添加和修改支持的标记语言。 4. **事件处理**: 讲解如何监听...

    markItUp Editor 基于jquery的轻量级网页编辑器-源码.zip

    源码学习,压缩包解压密码:www.cqlsoft.com

    10个基于jQuery或JavaScript的WYSIWYG 编辑器整理

    在线编辑内容的时候,那些基于 JavaScript 的编辑器帮了我们大忙,这些所见即所得(WYSIWYG)编辑器,给我们提供了类似 Office?的操作体验。如今,任何网站内容管理系统(CMS)和博客系统都需要一个这样的编辑器。...

    19款Javascript富文本网页编辑器

    在Web开发领域,富文本网页编辑器是一种非常重要的工具,它允许用户在网页上直接编辑富文本内容,包括格式化文本、插入图片、链接和其他媒体资源。19款Javascript富文本编辑器的介绍,涉及到多种不同的编辑器,每一...

    web_markitup:OpenERP 的 MarkItUp

    是一个 jQuery 插件,允许将任何文本区域变成标记编辑器。 在当前的早期形式中, web_markitup正在目标 OpenERP textarea 中复制 anru 的功能:允许动态预览 ReSTtructured 文本(点击此链接查看)。 要求 适用于 ...

    22个国外的Web在线编辑器收集

    在当今的互联网世界中,Web在线编辑器已经成为网站内容创建和管理不可或缺的工具。这些编辑器允许用户在网页上直接编辑文本,而无需深入了解HTML或CSS等复杂代码。以下是一些国外优秀的Web在线编辑器的详细介绍: 1...

    rex_markitup

    rex_markitup - Redaxo 插件 使用更现代/灵活的代码库完全重写之前...流体编辑器布局... ......整个事情都被修饰了一点...... 在模块中的应用 通过CSS类调用 &lt;textarea class="rex-markitup"&gt;&lt;/textarea&gt;

Global site tag (gtag.js) - Google Analytics