在Sinatra中提供静态文件...有美丽的路线?

时间:2011-04-30 03:50:59

标签: ruby sinatra static-files

假设我的目录结构类似于:

path_to_file/one/index.html

如何设置我的sinatra应用程序路由到

mysite.com/path_to_file/one/

并提交前面提到的文件? path_to_file将始终保持不变,但其中会有不同的文件夹(twothree等)。

我尝试了以下内容:

get '/path_to_file/:number' do
  File.read(File.join('path_to_file', "#{params[:number]}", "index.html"))
end

但是从index.html链接的javascript文件无法正确呈现。

2 个答案:

答案 0 :(得分:2)

知道了!

get '/path_to_file/:number/:file' do
  File.read(File.join('path_to_file', "#{params[:number]}", "#{params[:file]}"))
end

get '/path_to_file/:number' do
  File.read(File.join('path_to_file', "#{params[:number]}", "index.html"))
end

顺序很重要,因为如果这两种方法相反,get '/path_to_file/:number'就会成为get '/path_to_file/:number/:file'的超集。

答案 1 :(得分:0)

只是想一想,但您可以设置服务器软件Apachenginx,无论您使用的是什么,都可以投放.css.js并提供图像来自不同位置的文件。