Я также работал над решением Элтона Сантоса и решил, что сухари должны быть автоматическими, как история. Поэтому я изменил код:
В моей application.html.erb
<%= render_navigation %>
В моих взглядов, я уже использовал:
<% content_for :heading do 'User Detail' end %>
Итак, мой navigation_helper.rb выглядеть следующим образом:
module NavigationHelper
def navigation_add(title, url)
nav_list = session['navigation'].present? ? session['navigation'] : []
nav_list << { 'title' => title, 'url' => url }
# 1. Take last 3 items only (-1 is last, not -0)
nav_list = nav_list[-3..-1] if nav_list.length > 3
# 2. Now, if first is pointing root, remove it
nav_list.shift if nav_list[0]['url'] == '/'
# 3. If last one is same as its predecessor, remove it
nav_list.pop if nav_list.length > 1 && (nav_list[-1]['url'] == nav_list[-2]['url'])
session['navigation'] = nav_list
end
def render_navigation
render partial: 'shared/navigation', locals: { nav_list: session['navigation'] }
end
end
и, наконец, _navigation.html.erb:
<ol class="breadcrumb">
<li><%= link_to '/' do %>
<i class="fa fa-home"></i> Home <% end %>
</li>
<i class="fa fa-angle-double-right" style="color: #ccc; padding: 0 5px;"></i>
<% nav_list.each_with_index do |nav, i| %>
<% if i != nav_list.length-1 %>
<li><%= link_to nav['title'], nav['url'] %></li>
<% else %>
<li class="active"><%= nav['title'] %></li>
<% end %>
<% end %>
</ol>
Итак, что здесь происходит; Я сохраняю каждый заголовок страницы в сеансе и строю панировочные сундуки. Я сохраняю последние три записи только вместе с жестко закодированным для дома и удаляю повторяющиеся записи, когда они не разделены.
Я надеюсь, что это поможет: http://stackoverflow.com/questions/4289272/how-do-i-create-a-dynamically-generated-breadcrumb-in-rails-3 – akz92