我有一个包含标题,子标题和可能包含一个或多个按钮的部分。它用于许多不同的页面。通常页面不需要按钮,所以我只是将标题和可选的子标题传递给部分。然而,有时页面需要一个或多个按钮,我设法允许传递任意数量的按钮的唯一方法是使用content_for。我的部分看起来像这样:
<% if defined? page_title %>
<header class="pageHeader">
<div class="page-details">
<h3><%= page_title %></h3>
<% if defined? page_subtitle %>
<p><%= page_subtitle %></p>
<% end %>
</div>
<ul class="crud-menu nav-pills">
<%= content_for :page_header_buttons %>
</ul>
</header>
<% end %>
这种使用content_for令人讨厌。有什么办法可以将列表项/按钮传递给这个部分吗?我怎么能处理这种情况呢?
答案 0 :(得分:1)
您可以将此部分转换为布局:
<% if defined? page_title %>
<header class="pageHeader">
<div class="page-details">
<h3><%= page_title %></h3>
<% if defined? page_subtitle %>
<p><%= page_subtitle %></p>
<% end %>
</div>
<ul class="crud-menu nav-pills">
<%= yield %>
</ul>
</header>
<% end %>
你会像那样渲染它:
<%= render layout: "your_partial_above", locals: { page_title: "page title } do %>
<%= render "partial_with_your_buttons" %>
<% end %>