Sinatra渲染并传递Redcarpet的渲染选项

时间:2012-05-20 19:48:13

标签: sinatra markdown tilt redcarpet

我正在使用Sinatra,而Sinatra使用Tilt进行模板渲染。

默认情况下,Redcarpet有许多渲染扩展。如何通过Sinatra的#render方法使用其中一些扩展?

我需要使用:gh_codeblock扩展名来渲染markdown文件。

2 个答案:

答案 0 :(得分:2)

在Sinatra中,您通常不会直接使用render方法,而是使用method corresponding to the appropriate template language,在这种情况下markdown

应该能够将你想要的任何选项作为哈希传递给这个方法,Sinatra(和Tilt)会将它们传递给模板引擎。但是,最新发布的Tilt gem(1.3.3)并未通过标记的所有选项,只有:filter_html:smart,所以这不起作用。这在当前的Tilt头中是固定的,它还没有进入已发布的宝石。

如果您使用的是Bundler,则可以使用Bundler’s Git support解决此问题:

gem 'tilt', :git => 'git://github.com/rtomayko/tilt.git'

或者您可以download最新版本的Tilt,并确保其lib目录位于您的应用加载路径上,可能会将其放入vendor目录。

答案 1 :(得分:0)

如果我读了sinatra的源代码,倾斜和redcarpet,你应该可以这样做:

render('your_view', {:gh_codeblock => true}, {HASH_OF_YOUR_LOCAL_VARIABLES})

要呈现的第二个参数是传递给模板引擎的选项哈希。参见:

def markdown(template, options={}, locals={})
  render :markdown, template, options, locals
end