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

时间:2011-11-03 15:00:00

标签: ruby sinatra

我有一个简单的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文件但是在特殊路径上提供?

解决方案:

感谢this,我学到了几种不同的方法:

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

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

或者有一个辅助功能可以使它更清洁:

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

3 个答案:

答案 0 :(得分:41)

send_file能做你想做的吗?

e.g。

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

答案 1 :(得分:2)

你可以这样做:

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

答案 2 :(得分:0)

这对我有用:

require 'rubygems'
require 'sinatra'

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