# Crummy with Schema.org support Crummy is a simple and tasty way to add breadcrumbs to your Rails applications. ## Install Simply add the dependency to your Gemfile: ```ruby gem "crummy-schema-dot-org", "~> 1.9.0" ``` # Example In your controllers you may add\_crumb either like a before\_filter or within a method (It is also available to views). ```ruby class ApplicationController add_crumb "Home", '/' end class BusinessController < ApplicationController add_crumb("Businesses") { |instance| instance.send :businesses_path } add_crumb("Comments", only: "comments") { |instance| instance.send :businesses_comments_path } before_filter :load_comment, only: "show" add_crumb :comment, only: "show" # Example for nested routes: add_crumb(:document) { [:account, :document] } def show add_crumb @business.display_name, @business end def load_comment @comment = Comment.find(params[:id]) end end ``` Then in your view: ```erb <%= render_crumbs %> ``` ## Html options for breadcrumb link You can set the html options with *link_html_options*. These are added to the *a* tag. ```ruby add_crumb "Home", '/', link_html_options: {title: "my link title"} ``` ##You can set html instead text in first parameter. If tag a present in this html, tag a not be a wrapper. ```ruby add_crumb "Support".html_safe, "", {} ``` ## Options for render\_crumbs `render_crumbs` renders the list of crumbs as either html or xml The output format. Can either be :xml or :html or :html\_list. Defaults to :html ```ruby format: (:html|:html_list|:xml) ``` The separator text. It does not assume you want spaces on either side so you must specify. Defaults to `»` for :html and `` for :xml ```ruby separator: string ``` Render links in the output. Defaults to *true* ```ruby links: false ``` Render [Richsnipet](http:/support.google.com/webmasters/bin/answer.py?hl=en&answer=99170&topic=1088472&ctx=topic/) Default to *false* ```ruby microdata: true ``` Optionally disable linking of the last crumb, Defaults to *true* ```ruby last_crumb_linked: false ``` With this option, output will be blank if there are no breadcrumbs. ```ruby skip_if_blank: true ``` ### Examples ```ruby render_crumbs #=> Home » Businesses render_crumbs separator: ' | ' #=> Home | Businesses render_crumbs format: :xml #=> HomeBusinesses render_crumbs format: :html_list #=>
  1. Home
  2. Businesses
render_crumbs format: :html_list, :microdata => true #=>
  1. #
add_crumb support_link, {:right_side => true, :links => "/support", :li_right_class => "pull-right hidden-phone"} #=>
  • #=> #=> Support #=> #=>
  • #=>
  • ``` A crumb with a nil argument for the link will output an unlinked crumb. With `format: :html_list` you can specify additional `params: :li_class, :ol_class, :ol_id` ### App-wide configuration You have the option to pre-configure any of the Crummy options in an application-wide configuration. The options above are available to configure, with the exception of `:separator`, as well as many others. The biggest difference is that `:separator` is not an option. Instead, you have format-specific configuration options: `:html_separator`, `:xml_separator`, and `:html_list_separator`. `:separator` can still be overridden in the view. Insert the following in a file named `config/initializers/crummy.rb`: ```ruby Crummy.configure do |config| config.format = :xml end ``` Possible parameters for configuration are: ```ruby :format :links :skip_if_blank :html_separator :xml_separator :html_list_separator :html_list_right_separator :first_class :last_class :ol_id :ol_class :li_class :li_right_class :microdata :last_crumb_linked :truncate :right_side ``` See `lib/crummy.rb` for a list of these parameters and their defaults. ###Individually for each crumb configuration: ```ruby add_crumb support_link, {:right_side => true, :links => "/support", : li_class => "my_class", :li_right_class => "pull-right hidden-phone"} ``` Simple add that parameter to options hash. ## Live example application An example application is available right inside this gem. That application is documented, see `example/README` for details about usage. ## Todo - Accept collections of models as a single argument - Accept instances of models as a single argument - Allow for variables in names. (The workaround is to do your own before\_filter for that currently) - Make a crumbs? type method ## Credits - [Zach Inglis](http://zachinglis.com) of [Superhero Studios](http://superhero-studios.com) - [Andrew Nesbitt](http://github.com/andrew) - [Rein Henrichs](http://reinh.com) - [Les Hill](http://blog.leshill.org/) - [Sandro Turriate](http://turriate.com/) - [Przemysław Kowalczyk](http://szeryf.wordpress.com/2008/06/13/easy-and-flexible-breadcrumbs-for-rails/) - feature ideas - [Sharad Jain](http://github.com/sjain) - [Max Riveiro](http://github.com/kavu) - [Kamil K. Lemański](http://kml.jogger.pl) - [Brian Cobb](http://bcobb.net/) - [Kir Shatrov](http://github.com/shatrov) ([Evrone company](http://evrone.com)) - [sugilog](http://github.com/sugilog) - [Trond Arve Nordheim](http://github.com/tanordheim) - [Jan Szumiec](http://github.com/jasiek) - [Jeff Browning](http://github.com/jbrowning) - [Bill Turner](http://github.com/billturner) **Copyright 2008-2013 Zach Inglis, released under the MIT license**