如何使用Sinatra呈现纯HTML文件?

我有一个简单的sinatra应用程序。 我想要做的就是使用它作为包装器来在特定路由上提供静态HTML文件。 我的目录结构如下所示:

/directory myhtmlfile.html app.rb 

我的app.rb文件如下所示:

 require 'sinatra' get '/myspecialroute' do html :myhtmlfile # i know html is not a method, but this is what I would like to do end 

我怎么写这个,以便我可以保持我的html文件是一个简单的html文件,但在特殊的路线上提供它?

解:

多亏了这一点 ,我学到了几种不同的方法:

 get '/myspecialroute' do File.read('myhtmlfile.html') end 

这将打开,读取,关闭,然后将文件作为字符串返回。

或者有一个辅助函数来使这个更干净:

 get '/myspecialroute' do send_file 'myhtmlfile.html' end 

send_file是否符合您的要求?

例如

  get '/myspecialroute' do send_file 'special.html' end 

你可以这样做:

 get '/myspecialroute' do redirect '/myspecialroute.html' end 

这对我有用:

 require 'rubygems' require 'sinatra' get '/index.html' do @page_title = 'Home' @page_id = 'index.html' erb :'index.html', { :layout => :'layout.html' } end