2012-09-09 24 views
8

Estoy usando Sinatra y he estado intentando cargar algunas hojas de estilo. Intenté con la etiqueta html link normal en mi erb, pero eso no funcionó.Cargando hojas de estilo en Sinatra

ive intentó

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

No es un problema con la url que estoy usando, ¿hay alguna forma especial de lograr esto?

Respuesta

11

Cuando usa href="style.css", está especificando un vínculo relativo a la hoja de estilo. El camino real que va a solicitar su navegador dependerá de la dirección URL de la página actual, así que por ejemplo si tiene una ruta como:

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

continuación, el navegador buscará la hoja de estilo en /things/style.css. Obviamente, esto no funcionará si su hoja de estilo está en el nivel superior en su directorio public.

La solución rápida es utilizar una ruta de acceso absoluta a su hoja de estilo: href="/style.css" (tenga en cuenta el carácter /). Esto hará que el navegador siempre busque la hoja de estilo en la raíz del servidor.

Esto supone que su aplicación siempre está montada en la raíz de su servidor y fallará si la ejecuta en un subdirectorio. Desea poder decir "busque la hoja de estilo en la raíz de esta aplicación, donde sea que esté". En Sinatra puedes hacer esto usando el url helper method. El uso de ERB como su lenguaje de plantillas esto se vería así:

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

Esto asegurará que el enlace a style.css será correcta siempre que su aplicación se encuentra.

Cuestiones relacionadas