質問

私は小さなシナトラベースのアプリを書いていますが、各ビューがさまざまなアイテムをレイアウトに挿入できるようにしたいと考えています。たとえば 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でこの問題に立ち向かいましたが、幸運なことに、Tim Lucasは彼がフォークして電話をかけたものを私に向けることができました Sinatra-Content-for. 。これはあなたが必要とするものをカバーします。

他のヒント

これは、特にHamlではなくERBテンプレートを使用している場合、SinatraのRailsスタイルの「Content_for」機能にとって最も堅牢なソリューションであることがわかりました。

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

Rubyファイルで@Stylesheetを使用することができます

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top