2009-12-05 13 views
5

Estoy escribiendo una pequeña aplicación basada en Sinatra y me gustaría que cada vista pueda insertar varios elementos en el diseño, por ejemplo, la página title o referencias adicionales de CSS/javascript en el head.Rendimiento para múltiples bloques

Actualmente mi diseño (erb) se parece a esto (simplificado):

<html> 
<head> 
    <title>Hard Coded Title Here</title> 
    <link rel="stylesheet" ... /> 
</head> 
<body> 
    <h1>Hard Coded Title Here</h1> 
    <div id="content"> 
     <%= yield %> 
    </div> 
</body> 
</html> 

En lugar de tener el título y las referencias CSS/JS duro codificado, me gustaría lograr algo en este sentido:

<html> 
<head> 
    <title><%= yield :title %></title> 
    <link rel="stylesheet" ... /> 
    <%= yield :more_head_refs %> 
</head> 
<body> 
    <h1><%= yield :title %></h1> 
    <div id="content"> 
     <%= yield %> 
    </div> 
</body> 
</html> 

Y ser capaz de definir el contenido para esos bloques desde cada vista.

¿Es esto posible y, de ser así, cómo lo haré?

Respuesta

4

Me encontré con este problema en Railscamp recientemente y afortunadamente Tim Lucas fue capaz de señalarme algo que bifurcó y trabajó llamado sinatra-content-for. Esto cubrirá lo que necesitas.

+0

Impresionante, eso parece exactamente lo que estoy buscando. Gracias. –

+2

El desarrollo ha continuado desde entonces bajo el proyecto [sinatra-content-for2] (http://rubygems.org/gems/sinatra-content-for2). – gioele

0

que sólo puede use @stylesheet en su archivo de ruby ​​

Cuestiones relacionadas