# coding: utf-8

5.2.3 Именованные маршруты

Давайте поместим именованные маршруты, созданные в Разделе 5.2.2 чтобы они работали в нашем макете. Это повлечет за собой заполнение второго аргумента link_to функции правильным именованным маршрутом. Например, мы конвертируем

  <%= link_to "About", '#' %> 

в

  <%= link_to "About", about_path %> 

и так далее.

Мы начнем с партиала шапки, _header.html.erb (Листинг 5.21), который содержит ссылки на Home и Help страницы. Пока мы здесь, мы также, следуя общей конвенции Сети, свяжем логотип с Home страницей.

Листинг 5.21. Партиал шапки со ссылками.

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).

Листинг 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

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

# coding: utf-8