Это часто делается с использованием content_for
в макете. Допустим, вы хотите, чтобы ваше меню находилось в определенном div в application.html.erb
:
# application.html.erb
<div id="menu_div>
<ul>
... etc ...
</ul>
</div>
Заменить внутреннее содержимое на выражение yield
:
<div id="menu_div>
<%= yield :group_menu %>
</div>
Затем в шаблон представления добавьте блок content_for
:
# page
<% content_for :group_menu do %>
<ul>
... etc ...
</ul>
<% end %>
Каждый шаблон страницы может затем определить свой собственный код меню в блоке content_for
. Это может быть дополнительно обобщено с помощью вспомогательного метода в блоке и передачи переменных экземпляра.
EDIT
Предполагая, что в контроллере назначено @group
, вы можете сделать что-то вроде:
<% content_for :group_menu do %>
<%= show_me_the_menu(@group) %>
<% end %>
и в помощнике (явно надуманный пример) :
def show_me_the_menu(group)
content_tag :ul do
group.users.collect do |user|
concat(content_tag(:li, user.some_method))
end
end
end