Несколько content_for на одной странице

В моем приложении есть большой блок HTML, который я хотел бы переместить в общий шаблон, а затем использовать content_for с выходами для вставки необходимого контента. Однако, если я использую его более одного раза в одном файле макета, content_for просто добавляется к предыдущему, что делает эту идею не такой хорошей. Есть ли решение этой проблемы?

<div class="block side">
    <div class="block_head">
        <div class="bheadl"></div>
        <div class="bheadr"></div>
        <h2><%= yield :block_head %></h2>
    </div>
    <div class="block_content">
        <%= yield :block_content %>
    </div>
    <div class="bendl"></div>
    <div class="bendr"></div>
</div>

и я использую следующий код для установки содержимого для блока

    <%= overwrite_content_for :block_head do -%>
        My Block
    <% end -%>
    <%= overwrite_content_for :block_content do -%>
        <p>My Block Content</p>
    <% end -%>
    <%= render :file => "shared/_blockside" %>

Проблема в том, что если я использую это несколько раз в одном макете, содержимое исходного блока добавляется во вторичный block

Я попытался создать собственный вспомогательный метод, чтобы обойти это, однако он не возвращает никакого контента

  def overwrite_content_for(name, content = nil, &block)
    @_content_for[name] = ""
    content_for(name, content &block)
  end

Я тоже могу поступить совершенно неправильно, и если есть какие-то более эффективные методы для того, чтобы контент работал так Я бы хотел знать. Спасибо.

8
задан Jason Yost 12 April 2011 в 06:57
поделиться