codecamp

Sinatra Markdown 模板

需要引入 ​rdiscount​ gem/library 以填充 Markdown 模板:

# 需要在你的应用中引入rdiscount
require "rdiscount"

get '/' do
  markdown :index
end

这里调用的是 ​./views/index.markdown​ (​md​ 和 ​mkd​ 也是合理的文件扩展名)。

在 markdown 中是不可以调用方法的,也不可以传递 locals 给它。 你因此一般会结合其他的填充引擎来使用它:

erb :overview, :locals => { :text => markdown(:introduction) }

请注意你也可以从其他模板中调用 markdown 方法:

%h1 Hello From Haml!
%p= markdown(:greetings)

既然你不能在 Markdown 中调用 Ruby,你不能使用 Markdown 编写的布局。 不过,使用其他填充引擎作为模版的布局是可能的, 通过传递:​layout_engine​选项:

get '/' do
  markdown :index, :layout_engine => :erb
end

这将会调用 ​./views/index.md​ 并使用 ​./views/layout.erb​ 作为布局。

请记住你可以全局设定这个选项:

set :markdown, :layout_engine => :haml, :layout => :post

get '/' do
  markdown :index
end

这将会调用 ​./views/index.markdown​ (和任何其他的 Markdown 模版) 并使用 ​./views/post.haml​ 作为布局。

也可能使用 BlueCloth 而不是 RDiscount 来解析 Markdown 文件:

require 'bluecloth'

Tilt.register 'markdown', BlueClothTemplate
Tilt.register 'mkd',      BlueClothTemplate
Tilt.register 'md',       BlueClothTemplate

get '/' do
  markdown :index
end

使用 BlueCloth 来填充 ​./views/index.md​ 。


Sinatra Liquid 模板
Sinatra Textile 模板
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Sinatra 配置

Sinatra 错误处理

Sinatra Sinatra::Base - 中间件,程序库和模块化应用

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }