content_for允许模板页面代码放到layout中的任何位置。
比如我们的Rails程序不同的页面有不同的css样式,我们可以在layout里留出位置:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html>
- <head>
- <title>Todo List</title>
- <%= stylesheet_link_tag 'application' %>
- <%= yield :head %>
- </head>
- <body>
- <div id="container">
- <h1>Todo List</h1>
- <%= yield %>
- </div>
- </body>
- </html>
我们用yield :head来给模板页面某段代码留个"座位",再看页面:
- <% content_for :head do %>
- <%= stylesheet_link_tag 'projects' %>
- <% end %>
- <h2>Projects</h2>
- <ul>
- <% for project in @projects %>
- <li><%= project.name %></li>
- <% end %>
content_for :head里面的代码将填充layout里的yield :head。
layout+content_for,很灵活吧。