您可以在布局多个yield
,索性放弃了额外的人一个名字:
<html>
<body>
<div id="content">
<%= yield :sidebar %>
<%= yield %>
</div>
</body>
</html>
您可以通过使用content_for
方法
为
yield
添加HTML
<% content_for :sidebar do -%>
<div id="sidebar"></div>
<% end -%>
但是,您必须将其添加到每个您想要具有边栏的视图。相反,创建views/layouts/application_with_sidebar.html.erb
<% content_for :sidebar do -%>
<div id="sidebar"></div>
<% end -%>
<%= render :file => 'layouts/application' %>
Further reading
如果你更喜欢的yield
S上的数目保持在最低限度,你可以嵌套的布局来代替。
视图/布局/ application.html.erb
<html>
<body>
<div id="content">
<%= yield(:with_sidebar) or yield %>
</div>
</body>
</html>
视图/布局/ application_with_sidebar.html.erb
<% content_for :with_sidebar do -%>
<div id="sidebar"></div>
<% end -%>
<%= render :file => 'layouts/application' %>
控制器/ accounts_controller.rb
class AccountsController < ApplicationController
layout 'application_with_sidebar'
...
end
请务必查看相同文档的[更新版本](http://guides.rubyonrails.org/v4.0.12/layouts_and_rendering.html#using-nested-layouts)。 Rails的新版本发生了变化,链接的示例可能不再有效。 – 2015-07-21 13:45:21