在多个块的视图中产量

时间:2009-12-05 09:58:01

标签: ruby layout sinatra erb

我正在编写一个基于Sinatra的小应用程序,并希望每个视图能够在布局中插入各种项目,例如页面titlehead中的额外CSS / javascript引用

目前我的布局(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>

并且能够在每个视图中定义这些块的内容。

这是可能的,如果可以的话,我该如何去做呢?

3 个答案:

答案 0 :(得分:4)

我最近在Railscamp遇到了这个问题,幸运的是Tim Lucas能够指出我所谓的sinatra-content-for分叉和工作的东西。这将涵盖您的需求。

答案 1 :(得分:3)

我发现这是Sinatra中Rails风格的“content_for”功能最强大的解决方案,特别是如果你使用的是ERB模板而不是Haml:

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

答案 2 :(得分:0)

您可以在ruby文件中使用@stylesheet