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?

È stato utile?

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:

http://github.com/kematzy/sinatra-outputbuffer

Si può semplicemente utilizzare @foglio di stile al tuo file ruby

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top