WEB・アプリ開発

Middlemanでwrap_layoutがドキュメント通りに動かない件

記事内に商品プロモーションを含む場合があります

ドキュメント通りにしてもhtmlが何も出力されないという問題

公式ドキュメントのこの部分によると、Nested Layoutを使いたい場合は下のようにすると書いてありますが、これだと動きません。htmlが何も出力されず白い画面となります。

これはMiddlemanが依存するPadrinoに変更があったためと言われています。
middleman/middleman#1269

バージョンは以下の通りです。

  • middleman (3.4.0)
  • padrino-helpers (0.12.5)

erbに”=”を加えてもダメ

上記のissue内で、slimでいうところの-ではなく=を使うようになったとあったので、1行目に=を加えてみました。

すると、下のようなエラーが発生します。

エラーの全量ログはこちら

slimで”=”にすると動いた!

このissueのコメントによると、erbはまだ=に対応できていないからとのことです。
slimやhamlは対応済みなので、slimで以下のようにすると動きました。

無理やりerbでも動かす方法

どうしてもerbが使いたい人は、きれいなコードとは言えませんが以下のようにすると動きます。

まとめ

Middlemanは、Railsのhelperの使い勝手に似せるためかPadrinoというライブラリーに大きく依存しています。なので、Padrinoの仕様変更でわりと影響をうけそうです。
この件については、ドキュメントで説明しておけばよい話だと思うので、ドキュメントのほうにissueをたてました。

middleman/middleman-guides#535

そして、一つお願いしたいことがあります。

もしこの記事がお役に立てたのなら、下のボタンからSNSでシェアするか、あなたのブログでご紹介頂けないでしょうか?検索エンジンの仕組みで、同じ問題で今困っている方の目に届きやすくなります。もちろん、私としても記事を書くモチベーションになります。

記事への要望やダメ出しを書いて頂いても嬉しいです。定期的にエゴサーチしており、今後の記事で活かさせて頂きます。よろしくお願いいたします!