Как мне добавить простое меню в приложение Rails? (Как использовать yield: меню) - PullRequest
4 голосов
/ 16 июля 2010

Я хочу добавить меню в свое приложение First Ever Rails. Ничего сложного. Я решил, что, возможно, я должен ссылаться на него из application.html.erb, но после этого я застрял.

Вот что у меня так далеко (это немного)

<%= render :partial => "menu" %>

Если я выполняю частичный вызов «menu» в application.html.erb, куда я помещаю файл меню и как его вызвать? Нужно ли идти в контроллере вида?

Можно ли вызвать этот фрагмент из любой вложенной папки макета?

Часть II. Если я хочу показать другой контент в соответствии с моим представлением - как мне это сделать?

<body>
  <p>[<%= yield :menu %>]</p>
  <%= yield %>
</body>
</html>

Я только изучаю Rails, так что извините за глупые вопросы. Также меня интересует не только решение, но и идея лучших практик.

1 Ответ

5 голосов
/ 16 июля 2010

В общих чертах вы ищете помощника content_for.Вы помещаете это в свои представления, которые затем будут заполнять именованные блоки частями или макетами, такими как :menu.При желании вы можете использовать партиалы для фактического определения контента для content_for регионов.

В представлении:

<% content_for :menu do %>
  <ul>
    <li> ... </li>
    <li> ... </li>
  </ul>
<% end %>

или как:

<% content_for :menu do %>
  <%= render :partial => "some_menu_content" %>
<% end %>

В макете или частично:

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

Посмотрите эту заставку из серии Railscasts для получения дополнительной информации.Это старое, но все еще применимо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...