Class: EasyCrumbs::Breadcrumb
- Inherits:
-
Object
- Object
- EasyCrumbs::Breadcrumb
- Defined in:
- lib/easycrumbs/breadcrumb.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#object ⇒ Object
readonly
Returns the value of attribute object.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
Instance Method Summary collapse
-
#action_name(action, i18n, name) ⇒ Object
Return name of action.
-
#add_prefix(object_name, action, prefix, i18n) ⇒ Object
Add specyfic prefix if action is passed prefix = :every - add prefix for every action :none - do not add prefix [array of symbols] - add prefix only for actions in array.
-
#default_controller_name ⇒ Object
Return default name for controller object.
-
#default_model_name ⇒ Object
Return default name for model object.
-
#initialize(object, options = {}) ⇒ Breadcrumb
constructor
Breadcrumb object: object - just object from application.
-
#name_for_controller(i18n) ⇒ Object
Set name for controller.
-
#name_for_model(name_column, i18n) ⇒ Object
Set name for model Model has to have column equal to name_column.
-
#set_name(options = {}) ⇒ Object
Set name for model or controller.
-
#set_object(object) ⇒ Object
Object from application must be a model or controller.
-
#set_path(path, blank_links) ⇒ Object
Set path using hash from Rails.application.routes.recognize_path Example looks like: => “1”, :movie_id => “1”, :id => “1”, :action => “show”, :controller => “movies”.
Constructor Details
#initialize(object, options = {}) ⇒ Breadcrumb
Breadcrumb object: object - just object from application. Could be a model or controller name - printed name path - path to this object
9 10 11 12 13 |
# File 'lib/easycrumbs/breadcrumb.rb', line 9 def initialize(object, = {}) @object = set_object(object) @name = set_name() @path = set_path([:path], [:blank_links]) end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
3 4 5 |
# File 'lib/easycrumbs/breadcrumb.rb', line 3 def name @name end |
#object ⇒ Object (readonly)
Returns the value of attribute object.
3 4 5 |
# File 'lib/easycrumbs/breadcrumb.rb', line 3 def object @object end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
3 4 5 |
# File 'lib/easycrumbs/breadcrumb.rb', line 3 def path @path end |
Instance Method Details
#action_name(action, i18n, name) ⇒ Object
Return name of action.
87 88 89 |
# File 'lib/easycrumbs/breadcrumb.rb', line 87 def action_name(action, i18n, name) i18n == true ? I18n.t("breadcrumbs.actions.#{action}", :name => name) : "#{action.titlecase} #{name}" end |
#add_prefix(object_name, action, prefix, i18n) ⇒ Object
Add specyfic prefix if action is passed prefix = :every - add prefix for every action :none - do not add prefix
- array of symbols
-
add prefix only for actions in array
-
Example
- :show, :new
-
add prefix only for show and new
-
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/easycrumbs/breadcrumb.rb', line 70 def add_prefix(object_name, action, prefix, i18n) name = object_name unless action.nil? prefix = case prefix when :every [action.to_sym] when :none [] else prefix || [:new, :edit] end name = action_name(action, i18n, name) if prefix.include?(action.to_sym) end name end |
#default_controller_name ⇒ Object
Return default name for controller object
58 59 60 |
# File 'lib/easycrumbs/breadcrumb.rb', line 58 def default_controller_name @object.class == ApplicationController ? "Home" : @object.controller_name.titlecase end |
#default_model_name ⇒ Object
Return default name for model object
53 54 55 |
# File 'lib/easycrumbs/breadcrumb.rb', line 53 def default_model_name @object.class.to_s end |
#name_for_controller(i18n) ⇒ Object
Set name for controller
44 45 46 47 48 49 50 |
# File 'lib/easycrumbs/breadcrumb.rb', line 44 def name_for_controller(i18n) if @object.respond_to? :breadcrumb @object. else i18n == true ? I18n.t("breadcrumbs.controllers.#{@object.controller_name}") : default_controller_name end end |
#name_for_model(name_column, i18n) ⇒ Object
Set name for model Model has to have column equal to name_column
35 36 37 38 39 40 41 |
# File 'lib/easycrumbs/breadcrumb.rb', line 35 def name_for_model(name_column, i18n) if @object.respond_to? name_column @object.send name_column else i18n == true ? I18n.t("breadcrumbs.models.#{object.class.to_s.downcase}") : default_model_name end end |
#set_name(options = {}) ⇒ Object
Set name for model or controller
23 24 25 26 27 28 29 30 31 |
# File 'lib/easycrumbs/breadcrumb.rb', line 23 def set_name( = {}) if object.is_a?(ActiveRecord::Base) [:name_column] ||= "breadcrumb" name = name_for_model([:name_column], [:i18n]) else name = name_for_controller([:i18n]) end add_prefix(name, [:action], [:prefix], [:i18n]) end |
#set_object(object) ⇒ Object
Object from application must be a model or controller
17 18 19 20 |
# File 'lib/easycrumbs/breadcrumb.rb', line 17 def set_object(object) raise EasyCrumbs::InvalidObject unless object.is_a?(ActionController::Base) || object.is_a?(ActiveRecord::Base) object end |
#set_path(path, blank_links) ⇒ Object
Set path using hash from Rails.application.routes.recognize_path Example looks like: => “1”, :movie_id => “1”, :id => “1”, :action => “show”, :controller => “movies”
94 95 96 97 98 99 |
# File 'lib/easycrumbs/breadcrumb.rb', line 94 def set_path(path, blank_links) path.nil? || path.empty? ? "/" : Rails.application.routes.generate_extras(path).first rescue ActionController::RoutingError => e raise EasyCrumbs::NoPath.new(e.) unless blank_links == true nil end |