2009-12-05 14 views
5

Sto scrivendo una piccola app basata su Sinatra e vorrei che ogni vista fosse in grado di inserire vari elementi nel layout, ad esempio la pagina title o riferimenti CSS/javascript aggiuntivi nello head.Resa in vista per più blocchi

Attualmente il mio layout (erb) si presenta così (semplificato):

<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> 

Invece di avere il titolo e CSS riferimenti/JS hard coded, mi piacerebbe realizzare qualcosa in queste righe:

<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> 

E essere in grado di definire il contenuto di tali blocchi all'interno di ciascuna vista.

È possibile, e se sì, come dovrei farlo?

risposta

4

mi è venuta contro questo problema a Railscamp di recente e per fortuna Tim Lucas era in grado di punto me qualcosa che biforcuta e ha lavorato sulla chiamata sinatra-content-for. Questo coprirà ciò di cui hai bisogno.

+0

Impressionante, sembra esattamente quello che sto cercando. Grazie. –

+2

Da allora lo sviluppo è proseguito nell'ambito del progetto [sinatra-content-for2] (http://rubygems.org/gems/sinatra-content-for2). – gioele

0

Si può solo usa @stylesheet nel tuo file ruby ​​