Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I create a dynamically generated breadcrumb in Rails 3?

Breadcrumb being the navigational element that is used to tell the user where they are on the site.

E.g.

Home >> Projects >> Stages >> Uploads.

Where home, projects, stages & uploads are separate controllers.

like image 682
marcamillion Avatar asked Nov 26 '10 23:11

marcamillion


1 Answers

I use almost the same code for like 10 years... Wrote it first in ASP, then C#, PHP, and now 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

Then, in 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>

Your regular view:

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

And your template:

<html>
<head>
  <title> <%= yield :title %> </title>
</head>
<body>
  ...
  <%= render_navigation %>
  ...
  <%= yield %>
</body>
</html>
like image 105
Fábio Batista Avatar answered Sep 28 '22 03:09

Fábio Batista