No commit activity in last 3 years
No release in over 3 years
Provides an `easy_breadcrumbs` view helper for automatically generating bootstrap breadcrumbs for your Sinatra Application.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.13
~> 10.0
~> 3.0

Runtime

 Project Readme

EasyBreadcrumbs

Provides an easy_breadcrumbs view helper for automatically generating bootstrap breadcrumbs for your Sinatra Application.

  • It's able to properly generate the html for many different types of complex routes (See Below).
  • It only generates breadcrumbs for the routes you've defined, so if you have a route /categories/10/contacts/5, but haven't defined an index view route for /categories, that item will be left out.
  • It can automatically detect certain name attributes for specific resources.

Installation

Add this line to your application's Gemfile:

gem 'easy_breadcrumbs'

And then execute:

$ bundle

Or install it yourself as:

$ gem install easy_breadcrumbs

Usage

Step 1

If you're building a classic style Sinatra app, simply add this line to your sinatra application file:

require "easy_breadcrumbs"

If you're building a modular style Sinatra app, you'll also need to explicitly register the module within your application.

class HelloApp < Sinatra::Base
  helpers Sinatra::EasyBreadcrumbs

  get "/hello" do
    h "1 < 2"
  end
end

Step 2

And then use the helper method in your layout or view:

<%= easy_breadcrumbs %>

Step 3

And last but not least, make sure you have bootstrap installed. You can install bootstrap's css by adding this line to your applications layout template.

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css" integrity="sha384-AysaV+vQoT3kOAXZkl02PThvDr8HYKPZhNT5h/CXfBThSRXQ6jW5DO2ekP5ViFdi" crossorigin="anonymous">

Details

NEW: Auto Name Detection

Easy Breadcrumbs can now detect names for specific resources.

Path: /contacts/10
Old Breadcrumb Format: Home > Contacts > Contact
New Breadcrumb Format: Home > Contacts > Ada Lovelace

It's able to detect the name with the following limitations:

  • The resource is either a Hash or a Custom object
  • The resource has a key (Hash) or accessor method (custom object) of one of the following 3 commonly used name attributes:
    • :name
    • :title
    • :subject

If this condition fails, it will default to the old format.

Easy Breadcrumbs is able to handle a variety of complex routes.

Here are some examples:

Simple path to page

Path: /about
Breadcrumb: Home > About

Path to resource index page

Path: /contacts
Breadcrumb: Home > Contacts

###Path to specific resource

Path: /contacts/28
Breadcrumb: Home > Contacts > Contact

Path to resource new view

Path: /contacts/new
Breadcrumb: Home > Contacts > New Contact

Path to edit specific resource

Path: /contacts/28/edit
Breadcrumb: Home > Contacts > Contact > Edit Contact

Path to nested resource index page

Path: /categories/5/contacts
Breadcrumb: Home > Categories > Category > Contacts

Path to specific nested resource

Path: /categories/5/contacts/10
Breadcrumb: Home > Categories > Category > Contacts > Contact

Path to nested resource new view

Path: /categories/5/contacts/new
Breadcrumb: Home > Categories > Category > Contacts > New Contact

Path to edit specific nested resource

Path: /categories/5/contacts/10/edit
Breadcrumb: Home > Categories > Category > Contacts > Contact > Edit Contact

Road Map

  • Don't render breadcrumbs if current page is home
  • Allow for manual turning off of breadcrumbs for specific routes or sets of routes
  • Allow for custom configuration of name attributes for resources
    • Should be able to do something like set :easy_breadcrumbs, user: :name, post: :title
  • More robust spec suite
    • Explore more edge cases for both unit and integration tests
    • Eliminate repetition in specs
    • Other development gems that would help with this?
  • Update gemspec with depencency version restrictions and bump gem version to 1.0

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/nerboda/easy_breadcrumbs.

License

The gem is available as open source under the terms of the MIT License.