Как мне создать динамически генерируемые крошки в Rails 3? - PullRequest
11 голосов
/ 27 ноября 2010

Breadcrumb - навигационный элемент, который используется, чтобы сообщить пользователю, где он находится на сайте.

* 1003 Е.Г. *

Главная >> Проекты >> Этапы >> Загрузка.

Где дома, проекты, этапы и загрузки являются отдельными контроллерами.

Ответы [ 2 ]

25 голосов
/ 27 ноября 2010

Я использую почти один и тот же код около 10 лет ... Сначала написал его в ASP, затем в C #, PHP, а теперь и в Rails:

module NavigationHelper
    def ensure_navigation
        @navigation ||= [ { :title => 'Home', :url => '/' } ]
    end

    def navigation_add(title, url)
        ensure_navigation << { :title => title, :url => url }
    end

    def render_navigation
        render :partial => 'shared/navigation', :locals => { :nav => ensure_navigation }
    end
end

Затем в shared/navigation.html.erb:

<div class="history-nav">
    <% nav.each do |n| %>
        <%= link_to n[:title], n[:url] %>
    <% end %>
    <%= link_to yield(:title), request.path, :class => 'no-link' %>
</div>

Ваш обычный просмотр:

<% content_for :title, 'My Page Title' %>
<% navigation_add 'My Parent Page Title', parent_page_path %>

А твой шаблон:

<html>
<head>
  <title> <%= yield :title %> </title>
</head>
<body>
  ...
  <%= render_navigation %>
  ...
  <%= yield %>
</body>
</html>
1 голос
/ 26 мая 2014

Предыдущий ответ может быть обновлен без использования <% content_for :title, 'My Page Title' %>

  <div class="history-nav">
    <% nav.each do |n| %>
      <% unless n.equal? nav.last %>
        <%= link_to n[:title], n[:url] %>            
      <% else %>
        <%= n[:title] %>
      <% end %>
    <% end %>
  </div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...