原创作者: hideto   阅读:2193次   评论:1条   更新时间:2011-05-26    
如果我们想根据模板页面更改局部layout,使用content_for即可。
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,很灵活吧。
评论 共 1 条 请登录后发表评论
1 楼 mingliangfeng 2012-05-11 14:45
不能适应超过三层的的override,比如我有A,B,C三个模板,B在A的基础上添加自己的东西,C在B和A的基础上添加自己的东西。如果没有类似子类调用父类的super.foo的方式,是算不上灵活的。

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics