Rails宝典之第八式: layout与content_for

时间:2021-01-15 21:11:22
如果我们想根据模板页面更改局部layout,使用content_for即可。 
content_for允许模板页面代码放到layout中的任何位置。 

比如我们的Rails程序不同的页面有不同的css样式,我们可以在layout里留出位置: 
Java代码   Rails宝典之第八式: layout与content_for
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
  2.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
  3. <html>  
  4.   <head>  
  5.     <title>Todo List</title>  
  6.     <%= stylesheet_link_tag 'application' %>  
  7.     <%= yield :head %>  
  8.   </head>  
  9.   <body>  
  10.     <div id="container">  
  11.       <h1>Todo List</h1>  
  12.       <%= yield %>  
  13.     </div>  
  14.   </body>  
  15. </html>  

我们用yield :head来给模板页面某段代码留个"座位",再看页面: 
Java代码   Rails宝典之第八式: layout与content_for
  1. <% content_for :head do %>  
  2.   <%= stylesheet_link_tag 'projects' %>  
  3. <% end %>  
  4. <h2>Projects</h2>  
  5. <ul>  
  6. <% for project in @projects %>  
  7.   <li><%= project.name %></li>  
  8. <% end %>  

content_for :head里面的代码将填充layout里的yield :head。 
layout+content_for,很灵活吧。