summaryrefslogtreecommitdiff
path: root/lib/bootstrap_breadcrumbs_builder.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bootstrap_breadcrumbs_builder.rb')
-rw-r--r--lib/bootstrap_breadcrumbs_builder.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/bootstrap_breadcrumbs_builder.rb b/lib/bootstrap_breadcrumbs_builder.rb
new file mode 100644
index 0000000..1d6326b
--- /dev/null
+++ b/lib/bootstrap_breadcrumbs_builder.rb
@@ -0,0 +1,32 @@
+# The BootstrapBreadcrumbsBuilder is a Bootstrap compatible breadcrumb builder.
+# It provides basic functionalities to render a breadcrumb navigation according to Bootstrap's conventions.
+#
+# BootstrapBreadcrumbsBuilder accepts a limited set of options:
+# * separator: what should be displayed as a separator between elements
+#
+# You can use it with the :builder option on render_breadcrumbs:
+# <%= render_breadcrumbs :builder => ::BootstrapBreadcrumbsBuilder, :separator => "&raquo;" %>
+#
+# Note: You may need to adjust the autoload_paths in your config/application.rb file for rails to load this class:
+# config.autoload_paths += Dir["#{config.root}/lib/"]
+#
+class BootstrapBreadcrumbsBuilder < BreadcrumbsOnRails::Breadcrumbs::Builder
+ def render
+ @context.content_tag(:ul, class: 'breadcrumb') do
+ @elements.collect do |element|
+ render_element(element)
+ end.join.html_safe
+ end
+ end
+
+ def render_element(element)
+ current = @context.current_page?(compute_path(element))
+
+ @context.content_tag(:li, :class => ('active' if current)) do
+ link_or_text = @context.link_to_unless_current(compute_name(element), compute_path(element), element.options)
+ divider = @context.content_tag(:span, (@options[:separator] || '/').html_safe, :class => 'divider') unless current
+
+ link_or_text + (divider || '')
+ end
+ end
+end \ No newline at end of file