是否可以将html元素传递给部分?

时间:2012-08-21 17:33:10

标签: ruby-on-rails-3 templates view partial content-for

我有一个包含标题,子标题和可能包含一个或多个按钮的部分。它用于许多不同的页面。通常页面不需要按钮,所以我只是将标题和可选的子标题传递给部分。然而,有时页面需要一个或多个按钮,我设法允许传递任意数量的按钮的唯一方法是使用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令人讨厌。有什么办法可以将列表项/按钮传递给这个部分吗?我怎么能处理这种情况呢?

1 个答案:

答案 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 %>