【问题标题】:Serving static files in Sinatra... with beautiful routes?在 Sinatra 中提供静态文件...有漂亮的路线?
【发布时间】:2011-04-30 03:50:58
【问题描述】:

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

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 文件无法正确呈现。

【问题讨论】:

  • 你的 Sinatra 控制器是什么样子的?
  • 不知道你的意思...不是我的 Sinatra 控制器上面的代码吗?

标签: ruby sinatra static-files


【解决方案1】:

知道了!

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' 的超集。

【讨论】:

  • 这就是我在之前的评论中的想法……很高兴你明白了!我在 Sinatra 中也这样做过。
【解决方案2】:

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

【讨论】:

  • 嗯,它托管在 Heroku 上,所以我无法访问服务器软件。另外,为了清楚起见,我想将自定义 .css.js 文件保留在同一个文件夹中,以供其他人查看我的代码。
猜你喜欢
  • 2021-10-31
  • 2011-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2020-08-03
  • 2019-08-04
相关资源
最近更新 更多