web-dev-qa-db-ja.com

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ファイルのままにして、特別なルートで提供できるようにするには、どうすればよいですか?

解決:

this のおかげで、私はそれを行うためのいくつかの異なる方法を学びました:

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

これにより、ファイルが開かれ、読み取られ、閉じられてから、文字列として返されます。

または、これをよりクリーンにするヘルパー関数があります。

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

send_file あなたがやりたいことをしますか?

例えば.

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

あなたはこのようにそれを行うことができます:

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

これは私のための仕事です:

require 'rubygems'
require 'sinatra'

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