2012-09-09 20 views
8

Sto usando Sinatra e ho cercato di caricare alcuni fogli di stile. Ho provato solo il normale tag html link nel mio ERB, ma non ha funzionato.Caricamento di fogli di stile in Sinatra

Ive ha provato

<head> 
    <link href="style.css" rel="stylesheet" type="text/css" /> 
</head> 

Non è un problema con l'URL sto usando, c'è qualche modo speciale per ottenere questo risultato?

risposta

11

Quando si utilizza href="style.css", si specifica un collegamento relativo al foglio di stile. Il percorso effettivo che il browser sarà richiesta dipenderà l'URL della pagina corrente, così per esempio se si dispone di un percorso simile:

get '/things/:id' do 
    #look up thing with id = :id 
    erb :my_view 
end 

quindi il browser cercherà il foglio di stile in /things/style.css. Questo ovviamente non funzionerà se il tuo foglio di stile è al livello più alto nella tua dir public.

La soluzione rapida consiste nell'utilizzare un percorso assoluto per il foglio di stile: href="/style.css" (notare il carattere /). Questo farà sì che il browser cerchi sempre il foglio di stile nella radice del server.

Ciò presuppone che l'applicazione sia sempre installata nella radice del server e non funzionerà se la si esegue in una sottodirectory. Vuoi essere in grado di dire "cerca il foglio di stile nella radice di questa applicazione, ovunque si trovi". In Sinatra puoi farlo usando lo url helper method. Usando ERB come lingua modello questo sarebbe simile:

<link href="<%= url('/style.css') %>" rel="stylesheet" type="text/css" /> 

Ciò garantirà il collegamento ad style.css sarà corretto, ovunque si trova la vostra applicazione.

Problemi correlati