Урожайность для нескольких блоков
Вопрос
Я пишу небольшое приложение на основе Синатры и хотел бы, чтобы каждое представление могло вставить различные элементы в макет, например, на страницу title
или дополнительные ссылки на CSS/JavaScript в head
.
В настоящее время мой макет (ERB) выглядит так (упрощено):
<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>
И иметь возможность определить контент для этих блоков изнутри каждого представления.
Это возможно, и если да, то как я бы сделал это?
Решение
Недавно я столкнулся с этим вопросом в Railscamp, и, к счастью, Тим Лукас смог указать мне на то, что он развевал и работал под названием синатра-контент-для. Анкет Это охватит то, что вам нужно.
Другие советы
Я обнаружил, что это самое надежное решение для функциональности в стиле Rails 'content_for' в Синатре, особенно если вы используете шаблоны ERB, а не Haml:
Вы можете просто использовать @stylesheet в своем рубиновом файле