Rendimento in vista per più blocchi
Domanda
Sto scrivendo un piccolo Sinatra-based app e vorrei ogni vista per essere in grado di inserire i vari elementi nel layout, per esempio la pagina title
o extra CSS/javascript riferimenti head
.
Attualmente il mio layout (erb) assomiglia a questo (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>
Piuttosto che avere il titolo e CSS/JS riferimenti codificati, mi piacerebbe realizzare qualcosa lungo queste linee:
<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 di essere in grado di definire il contenuto per i blocchi all'interno di ciascuna vista.
Questo e ' possibile, e se è così come posso fare per farlo?
Soluzione
mi è venuta contro questo problema a Railscamp di recente e per fortuna Tim Lucas stato in grado di punto me qualcosa che biforcuta e lavorato su chiamata Sinatra-contenuti-per . Questo riguarderà ciò che è necessario.
Altri suggerimenti
Ho trovato questo per essere la soluzione più robusta per Rails-style 'content_for' funzionalità Sinatra, soprattutto se si sta utilizzando ERB modelli piuttosto che Haml:
Si può semplicemente utilizzare @foglio di stile al tuo file ruby