5.2.3 Именованные маршруты
Давайте поместим именованные маршруты, созданные в Разделе 5.2.2 чтобы они работали в нашем макете. Это повлечет за собой заполнение второго аргумента link_to
функции правильным именованным маршрутом. Например, мы конвертируем
<%= link_to "About", '#' %>
в
<%= link_to "About", about_path %>
и так далее.
Мы начнем с партиала шапки, _header.html.erb
(Листинг 5.21), который содержит ссылки на Home и Help страницы. Пока мы здесь, мы также, следуя общей конвенции Сети, свяжем логотип с Home страницей.
app/views/layouts/_header.html.erb
<header> <% logo = image_tag("logo.png", :alt => "Sample App", :class => "round") %> <%= link_to logo, root_path %> <nav class="round"> <ul> <li><%= link_to "Home", root_path %></li> <li><%= link_to "Help", help_path %></li> <li><%= link_to "Sign in", '#' %></li> </ul> </nav> </header>
У нас не будет именованного маршрута для “Sign in” ссылки, до Главы 9, поэтому мы оставили ее в качестве ’#’
на данный момент. Обратите внимание, что этот код определяет локальную переменную logo
для тега логотипа, а затем делает ссылку на него в следующей строке:
<% logo = image_tag("logo.png", :alt => "Sample App", :class => "round") %> <%= link_to logo, root_path %>
Это немного чище, нежели упихивать все в одну строку. Особенно важно отметить, что ERb для присваивания не имеет знака равенства, это просто <% ... %>, Потому что мы не хотим, чтобы эта строка вставлялась в шаблон. (Использование локальной переменной таким образом - это только один из способов сделать это. Более чистым способом будет определение logo
помощника; см. Раздел 5.5.)
Другим местом со ссылками является подвал, _footer.html.erb
, в котором есть ссылки для About и Contact страниц (Листинг 5.22).
app/views/layouts/_footer.html.erb
<footer> <nav class="round"> <ul> <li><%= link_to "About", about_path %></li> <li><%= link_to "Contact", contact_path %></li> <li><a href="http://news.railstutorial.org/">News</a></li> <li><a href="http://www.railstutorial.org/">Rails Tutorial</a></li> </ul> </nav> </footer>
При этом, наш макет имеет ссылки на все статические страницы, созданные в Главе 3, так, например, /about ведет к About странице (Рис. 5.9).
Кстати, стоит отметить, что мы на самом деле не проверяли на наличие ссылок в шаблоне, наши тесты будут провальными, только если маршруты не определены. Вы можете проверить это, закомментировав один из маршрутов в Листинге 5.18 и выполнив тесты. Для метода тестирования, который на самом деле обеспечивает уверенность что ссылки существуют и отправляют в правильные места, см. Раздел 5.5.

Рисунок 5.9: About страница на /about