Frontmatterで呼び出し元のテンプレートに変数を渡すことができる。
- layout.haml
-
!!! %html %head %meta(charset="utf-8") %title= current_page.data.title %body = yield
- index.html.haml
-
--- title: akiroom.com --- %p something.
- layout.haml
-
!!! %html %head %meta(charset="utf-8") - if current_page.data.title.present? %title= current_page.data.title - else %title= yield_content(:title) %body = yield
- index.html.haml
-
- content_for(:title, "#{hoge_var}") %p something.
この時、index.htmlにアクセスすると、titleタグの中身は「akiroom.com」になっている。
この変数にさらに「title: #{hoge_var}
」というような感じでさらに変数を呼び出したいと思った。
その時どうすればいいか。
解決策
Frontmatterを使うのをあきらめた。代わりに、yieldとcontent_forを組み合わせた。
組み合わせ方の例は以下の通り。
もっとしかるべきやり方があるかもしれない。
こんにちわ。Frontmatterの中で変数を定義して使いたい場合、というのはどういった場合が想定されるでしょうか?後学のために教えていただきたく。(私自身はプログラマなので、実際に使う人がどこで困るのが知りたい)
コメントいただきありがとうございます。
confing.rbにproxyを使って大量のページを生成する際、proxyメソッドで渡したローカル変数をタイトルに含めたいと思って、このようなコードになりました。
ご返信ありがとうございます。参考になりました。