Au service de fichiers statiques dans Sinatra ... avec de belles routes?
-
27-10-2019 - |
Question
En supposant que j'ai une structure de répertoire similaire à:
path_to_file/one/index.html
Comment puis-je mettre mon application sinatra être routé
mysite.com/path_to_file/one/
et que le fichier a été mentionné précédemment à rendre? path_to_file
restera toujours le même, mais il y aura des dossiers différents (two
, three
, etc.) à l'intérieur.
J'ai essayé ce qui suit:
get '/path_to_file/:number' do
File.read(File.join('path_to_file', "#{params[:number]}", "index.html"))
end
mais alors l'exemple fichier javascript lié à partir index.html
ne rend pas correctement.
La solution
Je l'ai!
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
L'ordre est important, car si ces deux méthodes sont inversées, get '/path_to_file/:number'
devient une surcouche de get '/path_to_file/:number/:file'
.
Autres conseils
Juste une pensée, mais vous pouvez configurer votre logiciel serveur, Apache
, nginx
, quoi que ce soit que vous utilisez, pour servir .css
et les fichiers .js
et image à partir d'un autre endroit.