Module: Gretel::ViewHelpers

Defined in:
lib/gretel/view_helpers.rb

Instance Method Summary collapse

Instance Method Details

Sets the current breadcrumb to be rendered elsewhere. Put it somewhere in the view, preferably in the top, before you render any breadcrumbs HTML:

<%
breadcrumb :category, @category
%>


7
8
9
10
11
12
# File 'lib/gretel/view_helpers.rb', line 7

def breadcrumb(key = nil, *args)
  if key.nil? || key.is_a?(Hash)
    raise ArgumentError, "The `breadcrumb` method was called with #{key.inspect} as the key. This method is used to set the breadcrumb. Maybe you meant to call the `breadcrumbs` method (with an 's' in the end) which is used to render the breadcrumbs?"
  end
  @_gretel_renderer = Gretel::Renderer.new(self, key, *args)
end

Renders the breadcrumbs HTML, for example in your layout. See the readme for default options.

<%= breadcrumbs pretext: "You are here: " %>

If you supply a block, it will yield an array with the breadcrumb links so you can build the breadcrumbs HTML manually:

<% breadcrumbs do |links| %>
  <% if links.any? %>
    You are here:
    <% links.each do |link| %>
      <%= link_to link.text, link.url %> (<%= link.key %>)
    <% end %>
  <% end %>
<% end %>


44
45
46
47
48
49
50
# File 'lib/gretel/view_helpers.rb', line 44

def breadcrumbs(options = {}, &block)
  if block_given?
    gretel_renderer.yield_links(options, &block)
  else
    gretel_renderer.render(options)
  end
end

#parent_breadcrumb(options = {}, &block) ⇒ Object

Returns or yields parent breadcrumb (second-to-last in the trail) if it is present.



53
54
55
56
57
58
59
# File 'lib/gretel/view_helpers.rb', line 53

def parent_breadcrumb(options = {}, &block)
  if block_given?
    gretel_renderer.yield_parent_breadcrumb(options, &block)
  else
    gretel_renderer.parent_breadcrumb(options)
  end
end

#with_breadcrumb(key, *args, &block) ⇒ Object

Yields a block where inside the block you have a different breadcrumb than outside.

<% breadcrumb :about %>

<%= breadcrumbs # shows the :about breadcrumb %>

<% with_breadcrumb :product, Product.first do %>
  <%= breadcrumbs # shows the :product breadcrumb %>
<% end %>

<%= breadcrumbs # shows the :about breadcrumb %>


25
26
27
28
29
30
# File 'lib/gretel/view_helpers.rb', line 25

def with_breadcrumb(key, *args, &block)
  original_renderer = @_gretel_renderer
  @_gretel_renderer = Gretel::Renderer.new(self, key, *args)
  yield
  @_gretel_renderer = original_renderer
end