Serve file statici a Sinatra ... con percorsi bellissimi?
-
27-10-2019 - |
Domanda
Supponendo che io abbia una struttura di directory simile a:
path_to_file/one/index.html
Come faccio a impostare il routing della mia app sinatra su
mysite.com/path_to_file/one/
e devi eseguire il rendering del file citato in precedenza?path_to_file
rimarrà sempre lo stesso, ma al suo interno saranno presenti cartelle diverse (two
, three
, ecc.).
Ho provato quanto segue:
get '/path_to_file/:number' do
File.read(File.join('path_to_file', "#{params[:number]}", "index.html"))
end
ma poi l'esempioIl file javascript collegato da index.html
non viene visualizzato correttamente.
Soluzione
Capito!
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'ordine è importante, poiché se questi due metodi vengono invertiti, get '/path_to_file/:number'
diventa un superset di get '/path_to_file/:number/:file'
.
Altri suggerimenti
Solo un'idea, ma potresti configurare il tuo software server, Apache
, nginx
, qualunque cosa tu stia utilizzando, per servire .css
e .js
e file di immagine da una posizione diversa.