Sass ミックスインを使用して、カスタマイズ可能なラッパーでコード ブロックをラップできる方法がとても気に入っています。
=container($class)
.#{$class}.container
.container-inner
@content
+container(header)
foo: bar
+container(main)
baz: quux
結果の CSS:
.header.container .container-inner {
foo: bar;
}
.main.container .container-inner {
baz: quux;
}
Padrino/Middleman パーシャルで同じことをしようとしています。問題は、パーシャルがコンテンツ ブロックを受け入れないことです (なぜですか?)。:(
コンテンツ ブロックを に渡すことで回避しようとしましたcontent_for
が、その後 を使用すると、content_for
コンテンツを置き換えるのではなく、コンテンツに追加されます。
一部partials/container.haml
:
.container
= yield_content :container
ページindex.html.haml
:
- content_for :container do
Foo
= partial('partials/container')
- content_for :container do
Bar
= partial('partials/container')
結果の HTML:
<div class="container">
Foo
</div>
<div class="container">
Foo
Bar
</div>
ご覧のとおり、これは私のコンテンツを複製するものであり、絶対に容認できません。また、この方法では、ラッパー HTML のカスタマイズに使用される引数を提供できません。
そこで、ヘルパーを作成することを考えました。これにより、次の使用スタイルが可能になり、コンテンツブロックへの変数の受け渡しもサポートされます。content_for
= partial_with_content_block('partials/container', class: 'header') do
Foo
= partial_with_content_block('partials/container', class: 'main') do
Bar
そのようなヘルパーを実装するにはどうすればよいですか?