Доходность для нескольких блоков - PullRequest
5 голосов
/ 05 декабря 2009

Я пишу небольшое приложение на основе 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>

И иметь возможность определять содержимое для этих блоков в каждом представлении.

Возможно ли это, и если да, то как мне поступить?

Ответы [ 3 ]

4 голосов
/ 05 декабря 2009

Недавно я столкнулся с этой проблемой в Railscamp, и, к счастью, Тим Лукас смог указать мне на что-то, над чем он работал и работал, под названием sinatra-content-for . Это покроет то, что вам нужно.

3 голосов
/ 20 сентября 2010

Я считаю, что это самое надежное решение для функциональности 'content_for' в стиле Rails в Sinatra, особенно если вы используете шаблоны ERB вместо Haml:

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

0 голосов
/ 03 декабря 2011

Вы можете просто использовать @stylesheet в своем файле ruby ​​

...