確認方法がテンプレートが存在するシナトラ
質問
のシナトラルビーの枠組み、経路のようになります:
get '/portfolio/:item' do
haml params[:item].to_sym
end
この作品の良さにテンプレートに存在する(例えば、してください /portfolio/website
, いテンプレートと呼ばれ /views/website.haml
もばいるURLでないテンプレートのように、 example.com/portfolio/notemplate
, 人にとってこのエラー:
Errno::ENOENTで/ポートフォリオ/notemplate
なファイルやディレクトリに-/.../views/notemplate.haml
たいのですが試験ャるかどうかをテンプレートが存在する?見つからなる"がテンプレートが存在する"方法をSinatraます。
解決
だが、シナトラの特定について教えてくださいもののきものErrno::ENOENTの例外のような:
get '/portfolio/:item' do
begin
haml params[:item].to_sym
rescue Errno::ENOENT
haml :default
end
end
他のヒント
最初の答えいた場合のファイルが存在しないシンボルを作成します。ていただけないゴミ収集したい簡単に漏れます。ものddos攻撃にnonexisitngファイルを作り出す記号です。代わりにこのルートを使用することがこれからも事業のルーティングcssファイル):
# sass style sheet generation
get '/css/:file.css' do
halt 404 unless File.exist?("views/#{params[:file]}.scss")
time = File.stat("views/#{params[:file]}.scss").ctime
last_modified(time)
scss params[:file].intern
end
所属していません StackOverflow