【问题标题】:Yield in view for multiple blocks考虑多个区块的产量
【发布时间】:2010-12-23 12:45:28
【问题描述】:

我正在编写一个基于 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>

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

这可能吗?如果可以,我会怎么做?

【问题讨论】:

    标签: ruby layout sinatra erb


    【解决方案1】:

    我最近在 Railscamp 遇到了这个问题,幸运的是 Tim Lucas 能够向我指出他分叉和工作的东西,称为 sinatra-content-for。这将满足您的需求。

    【讨论】:

    • 太棒了,这看起来正是我想要的。谢谢。
    • sinatra-content-for2项目下继续开发。
    【解决方案2】:

    我发现这是 Sinatra 中 Rails 风格的“content_for”功能最强大的解决方案,尤其是在您使用 ERB 模板而不是 Haml 时:

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

    【讨论】:

      【解决方案3】:

      你可以在你的 ruby​​ 文件中使用@stylesheet

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-23
        • 1970-01-01
        • 1970-01-01
        • 2013-05-26
        • 2023-03-15
        相关资源
        最近更新 更多