Два рендеринга content_for одного и того же yield во всех представлениях (Rails 3)

У меня есть два отдельных представления, которые выводят содержимое для именованного блока yield, называемого :icons.

Когда я загружаю две страницы, я всегда вижу в блоке :icons содержимое двух представлений... :-(

Вид 1: Проекты#Индекс

<% content_for :icons do %>
    Project Icons ...
<% end %>
...

Вид 2: Дерево#Шоу

<% content_for :icons do %>
  <a href="javascript:void(0)" id="dynatree-expand-all">Expand</a> 
  <a href="javascript:void(0)" id="dynatree-collapse-all">Collapse</a> 
  <a href="javascript:void(0)" id="dynatree-transfer">Import</a> 

  <div id="viewname_selector">
    <%= form_tag({:controller => :loopview, :action => :show}, { :id => "viewname_form" ,:remote => true}) do %>
        <%= collection_select(:viewname, :id, @viewnames, :id, :name, :selected => @current_viewname_id) %>
    <% end %>
  </div>
<% end %>

И вызов в application.html.erb

<div id="icons">
  <%= yield :icons %>
</div>

Когда я загружаю Projects#index, у меня есть только значки проектов (так что все в порядке).

Когда я загружаю Tree#index, у меня есть значки дерева И значки проекта...

Что я делаю не так ? Как получить только значки дерева в представлении дерева?

Изменить: полный источник дерева#index

<% content_for :head do %>
<title>Dynatree View <%= sicadea %></title>
<%= javascript_include_tag "leanModal/jquery.leanModal.min" %>  

<%#   For the dynatree  %>
<%= stylesheet_link_tag    "dynatree/skin/ui.dynatree.css" %>
<%= stylesheet_link_tag    "dynatree/skin/ui.dynatree.custom.css" %>
<%= javascript_include_tag "cookie/jquery.cookie.js" %>
<%= javascript_include_tag "dynatree/jquery.dynatree-1.2.4.js" %>
<%= stylesheet_link_tag    "contextMenu/jquery.contextMenu.css" %>
<%= javascript_include_tag "contextMenu/jquery.contextMenu-custom.js" %>
<%= javascript_include_tag "contextMenu/jquery.ui.position.js" %>
<%= javascript_include_tag "dynatree.js" %>

<%# for the poin'ts table %>
<%= stylesheet_link_tag    "loopview.css" %>
<% end %>

<% content_for :icons do %>
<a href="javascript:void(0)" id="dynatree-expand-all">Expand</a>  |
<a href="javascript:void(0)" id="dynatree-collapse-all">Collapse</a>  |
<a href="javascript:void(0)" id="dynatree-transfer">Import</a> |

<div id="viewname_selector">
    <%= form_tag({:controller => :loopview, :action => :show}, { :id => "viewname_form" ,:remote => true}) do %>
        <%= collection_select(:viewname, :id, @viewnames, :id, :name, :selected => @current_viewname_id) %>
    <% end %>
</div>
<% end %>



<div id="leftpanel">
<!-- Leftpanel Context menus -->
<ul id="myMenu" class="contextMenu">
    <li class="rename"><a href="#rename">Rename</a></li>
    <li class="new_child"><a href="#new_child">New Child</a></li>
    <li class="copy"><a href="#copy">Copy</a></li>
    <li class="paste"><a href="#paste">Paste</a></li>
    <li class="delete"><a href="#delete">Delete</a></li>
</ul>
<ul id="ProjectMenu" class="contextMenu">
    <li class="new_child"><a href="#new_child">New Child</a></li>
</ul>

<!-- Leftpanel Tree title -->
<div id='dynatree-title' data-project-id='<%= current_project.id %>'>
    <span></span><%= current_project.name %>
</div>

<!-- Leftpanel Dynatree -->
<%= render_project_tree(current_project, "tree") %> 

<!-- Leftpanel "New Child" Form -->
<%= render :partial => "lean_new_child" %>
</div>


<!-- Right Panel -->
<div id="dynatree-details">
    <%= render :template => 'projects/show' %>
</div>

person Stéphane V    schedule 27.08.2013    source источник


Ответы (1)


Могу я узнать, почему вы добавили следующий код в application.html.erb.

<div id="icons">
  <%= yield :icons %>
</div>

Я думаю, что это загружается только на вашей странице Tree#index.

person Inaccessible    schedule 27.08.2013
comment
Нет, это для создания блока, куда вы можете добавлять контент через content_for. Не загружается дерево#index. - person Stéphane V; 27.08.2013
comment
Откуда приходит :icons? от модели? Можете ли вы показать свой полный код просмотра для дерева # index? - person Inaccessible; 27.08.2013
comment
Конечно, это происходит из ‹% content_for :icons do %›. Исходный код дерева#index был добавлен в вопрос - person Stéphane V; 27.08.2013
comment
Хорошо, это был tree#index, который загружал страницу проекта как страницу по умолчанию... которая добавляла значок для проекта... решено - person Stéphane V; 27.08.2013