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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top