Railsでlayoutのyieldって複数書けないの?

元の質問は、layoutで、

<html>
  <head>
    <%= yield %>
</html>

とかしていいの?という質問でしたが、「あー、きっとが毎回違うんだな」と予想したのでタイトルの質問として回答しました。


元質問の答えとしては、「できる」ですが、閉じ忘れたら大変よろしくないので、yieldを複数書ける方法を知らせました。

具体的には、layoutの方で

<html>
  <head>
    <title>My Website</title>
    <%= yield :script %>
  </head>
  <body>
    <%= yield %>
  </body>
</html>

として、
個別のViewの方で content_for を使います。

<% content_for :script do %>
   <!-- このブロックの中が上記 yield :script に挿入される。 -->
  <script type="text/javascript">
     ...
  </script>
<% end %>

<!-- content_for ブロック以外が yield に挿入される。 -->
...
メインのHTML
...

となります。

詳しくは、content_forのヘルプをご覧ください。


twitterでRailsの無償サポートやってます。また、実行して確かめないので無保証です。ご注意ください。