Я пишу небольшое приложение на основе Sinatra и хотел бы, чтобы каждое представление могло вставлять различные элементы в макет, например страницу title
или дополнительные ссылки CSS / javascript в head
.
В настоящее время мой макет (эрб) выглядит следующим образом (упрощенно):
<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>
Вместо того, чтобы жестко кодировать заголовок и ссылки CSS / JS, я бы хотел достичь чего-то такого:
<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>
И иметь возможность определять содержимое для этих блоков в каждом представлении.
Возможно ли это, и если да, то как мне поступить?