手机
当前位置:查字典教程网 >脚本专栏 >ruby专题 >在Ruby on Rails中使用Markdown的方法
在Ruby on Rails中使用Markdown的方法
摘要:实现Markdown语法和代码语法高亮分别是用的Redcarpet和pygments.rb两个Gem:https://github.com/...

实现 Markdown 语法和代码语法高亮分别是用的 Redcarpet 和 pygments.rb 两个 Gem:

https://github.com/vmg/redcarpet

https://github.com/tmm1/pygments.rb

https://github.com/richleland/pygments-css

http://pygments.org/docs/lexers/

在/Gemfile中添加如下两行:

gem 'redcarpet' gem 'pygments.rb'

需要说明的是,pygments.rb 依赖于 Python,所以确保机器已经安装了 Python 2.x。

然后在/app/controllers/comments_controller.rb中添加相应 redcarpet 和 pygments.rb 的代码:

class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception helper_method [:markdown] # Highlight code with Pygments class HTMLwithPygments < Redcarpet::Render::HTML def block_code(code, language) language = "text" if language.blank? sha = Digest::SHA1.hexdigest(code) Rails.cache.fetch ["code", language, sha].join("-") do Pygments.highlight(code, :lexer => language) end end end protected # Markdown with Redcarpet def markdown(text) renderer = HTMLwithPygments.new({ :filter_html => true, :hard_wrap => true, :link_attributes => {:rel => 'external nofollow'} }) options = { :autolink => true, :no_intra_emphasis => true, :fenced_code_blocks => true, :lax_html_blocks => true, :strikethrough => true, :superscript => true, :tables => true } Redcarpet::Markdown.new(renderer, options).render(text).html_safe end end

最后在 View 中就可以直接调用 markdown 方法来处理博客正文了:

<%= markdown @post.content %>

语法规则类似 Github 上的 Markdown,码字效率大大提高。

【在Ruby on Rails中使用Markdown的方法】相关文章:

使用Ruby on Rails快速开发web应用的教程实例

Ruby on Rails中MVC结构的数据传递解析

在Docker中自动化部署Ruby on Rails的教程

Ruby中操作字符串的一些基本方法

ruby 迭代器使用方法

Ruby中相等性判断的4种方法

Ruby中的钩子方法详解

在Ruby中创建和使用哈希的教程

Ruby中操作文件的方法介绍

Ruby中使用正则表达式的基础指引

精品推荐
分类导航