Вы можете иметь более одного yield
в макете, просто присвойте дополнительным имя:
<html>
<body>
<div id="content">
<%= yield :sidebar %>
<%= yield %>
</div>
</body>
</html>
Вы можете добавить HTML для этого yield
, используя content_for
метод
<% 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' %>
Дополнительная литература
Если вы предпочитаете, чтобы количество yield
с было минимальным, вместо этого вы можете вкладывать свои макеты.
просмотров / макеты / 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