Created
February 28, 2012 17:38
-
-
Save riyad/1933884 to your computer and use it in GitHub Desktop.
How to make breadcrumbs_on_rails render a Bootstrap compatible breadcrumb navigation
Updated for Bootstrap 4 (alpha6): https://gist.github.com/SaladFork/270a4cb3ac20be9715b7117551c31ec7
Of note:
- No longer has
:separator
option (Bootstrap 4 accomplishes this with CSS) - Now has
:container_tag
option in addition to:tag
option (default to:ol
and:li
, respectively) - Now has
:show_empty
option which defaults tofalse
to prevent rendering when there are no crumbs (h/t @mrfoto's fork)
Bootstrap 5
# The BootstrapBreadcrumbsBuilder is a Bootstrap compatible breadcrumb builder.
# It provides basic functionalities to render a breadcrumb navigation according to Bootstrap's conventions.
#
# You can use it with the :builder option on render_breadcrumbs:
# <%= render_breadcrumbs :builder => ::BootstrapBreadcrumbsBuilder %>
#
# Note: you can put this file into app/utils/bootstrap_breadcrumbs_builder.rb and it will autoload.
#
class BootstrapBreadcrumbsBuilder < BreadcrumbsOnRails::Breadcrumbs::Builder
def render
@context.content_tag(:nav, 'aria-label' => "breadcrumb") do
@context.content_tag(:ol, class: 'breadcrumb') do
@elements.collect do |element|
render_element(element)
end.join.html_safe
end
end
end
def render_element(element)
current = @context.current_page?(compute_path(element))
classes = ['breadcrumb-item']
classes.push('active') if current
@context.content_tag(:li, :class => classes.join(" ") ) do
link_or_text = @context.link_to_unless_current(compute_name(element), compute_path(element), element.options)
link_or_text
end
end
end
Thanks @sadjow!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Also FWIW, I had to do some debugging to figure it out, if you want to check if any breadcrumbs exist, i.e. only render if they do... the breadcrumbs are in the instance variable @breadcrumbs.