Module: MorseControllerHelpers

Extended by:
ActiveSupport::Concern
Includes:
CrudHelpers, FlashHelpers
Defined in:
lib/morse_controller_helpers.rb,
lib/morse_controller_helpers/version.rb,
lib/morse_controller_helpers/crud_helpers.rb,
lib/morse_controller_helpers/flash_helpers.rb

Defined Under Namespace

Modules: CrudHelpers, FlashHelpers

Constant Summary collapse

VERSION =
'0.1.14'.freeze

Instance Method Summary collapse

Methods included from FlashHelpers

#flash_404_error, #flash_create_no, #flash_create_yes, #flash_destroy_no, #flash_destroy_yes, #flash_update_no, #flash_update_yes

Methods included from CrudHelpers

#create, #destroy, #edit, #index, #new, #show, #update

Instance Method Details

#assign_current_instance_from_params(pri) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/morse_controller_helpers.rb', line 21

def assign_current_instance_from_params(pri)
  return if dynamic_current_instance_exceptions.include? pri
  klass_us = pri.gsub('_id', '')
  klass = klass_us.classify.constantize
  if klass.respond_to?(:friendly)
    instance_variable_set "@#{klass_us}", klass.friendly.find(params[pri])
  else
    instance_variable_set "@#{klass_us}", klass.find(params[pri])
  end
  @current_instance = set_current_instance(klass_us)
end

#current_instancesObject



33
34
35
# File 'lib/morse_controller_helpers.rb', line 33

def current_instances
  @current_instances = klass.all
end

#dynamic_current_instanceObject



37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/morse_controller_helpers.rb', line 37

def dynamic_current_instance
  params_resource_ids.each do |pri|
    begin
      if try(:dynamic_current_instance_exceptions)
        next if dynamic_current_instance_exceptions.include? pri
      end
      assign_current_instance_from_params(pri)
    rescue ActiveRecord::RecordNotFound
      render_404
    end
  end
end

#klass(str = klass_camel) ⇒ Object



50
51
52
# File 'lib/morse_controller_helpers.rb', line 50

def klass(str = klass_camel)
  str.classify.constantize
end

#klass_camelObject



54
55
56
# File 'lib/morse_controller_helpers.rb', line 54

def klass_camel
  controller_name.singularize
end

#klass_humanizedObject



58
59
60
# File 'lib/morse_controller_helpers.rb', line 58

def klass_humanized
  klass_camel.humanize
end

#klass_idObject



62
63
64
# File 'lib/morse_controller_helpers.rb', line 62

def klass_id
  "#{klass_snake}_id"
end

#klass_pluralizedObject



66
67
68
# File 'lib/morse_controller_helpers.rb', line 66

def klass_pluralized
  klass_snake.pluralize
end

#klass_snake(str = klass_camel) ⇒ Object



70
71
72
# File 'lib/morse_controller_helpers.rb', line 70

def klass_snake(str = klass_camel)
  str.underscore
end

#params_resourceObject



82
83
84
# File 'lib/morse_controller_helpers.rb', line 82

def params_resource
  params.require(resource_symbol).permit!
end

#params_resource_idsObject



74
75
76
# File 'lib/morse_controller_helpers.rb', line 74

def params_resource_ids
  params.keys.collect { |p| p if p.include?('_id') }.compact
end

#params_resourcesObject



78
79
80
# File 'lib/morse_controller_helpers.rb', line 78

def params_resources
  params_resource_ids.map { |p| p.gsub('_id', '') }
end

#path_edit(cp = current_instance) ⇒ Object



86
87
88
# File 'lib/morse_controller_helpers.rb', line 86

def path_edit(cp = current_instance)
  [:edit, path_prefix, cp].compact
end

#path_indexObject



90
91
92
# File 'lib/morse_controller_helpers.rb', line 90

def path_index
  [path_prefix, resource_symbols].compact
end

#path_newObject



94
95
96
# File 'lib/morse_controller_helpers.rb', line 94

def path_new
  [:new, path_prefix, resource_symbol].compact
end

#path_prefixObject



98
99
100
# File 'lib/morse_controller_helpers.rb', line 98

def path_prefix
  nil
end

#path_prefix_symbolObject



102
103
104
105
# File 'lib/morse_controller_helpers.rb', line 102

def path_prefix_symbol
  return nil unless path_prefix
  path_prefix.to_sym
end

#path_show(instance = current_instance) ⇒ Object



107
108
109
# File 'lib/morse_controller_helpers.rb', line 107

def path_show(instance = current_instance)
  [path_prefix, instance].compact
end

#render_404Object



119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/morse_controller_helpers.rb', line 119

def render_404
  flash_404_error
  respond_to do |format|
    format.html do
      render file: "#{Rails.root}/public/404",
             layout: false,
             status: :not_found
    end
    format.xml  { head :not_found }
    format.any  { head :not_found }
  end
end

#resource_symbolObject



111
112
113
# File 'lib/morse_controller_helpers.rb', line 111

def resource_symbol
  klass_snake.to_sym
end

#set_current_instance(k) ⇒ Object



132
133
134
# File 'lib/morse_controller_helpers.rb', line 132

def set_current_instance(k)
  instance_variable_get("@#{k}") unless action_name == 'index'
end