Class: BrainDamage::View::Input::PolymorphicHybrid

Inherits:
Base show all
Defined in:
lib/generators/brain_damage/lib/views/inputs/polymorphic_hybrid.rb

Instance Attribute Summary

Attributes inherited from Templateable::FieldTemplateable

#partial_html, #type

Attributes inherited from Templateable::Base

#inner_html, #options, #template_file

Instance Method Summary collapse

Methods inherited from Base

#dir, #tag_options

Methods inherited from Templateable::FieldTemplateable

#empty_haml_path, #label_guard?, #method_missing, #render, #show?, #show_label?

Methods inherited from Templateable::Base

#indent, #method_missing, #render, #render_erb_file, #render_erb_string, #render_template_file

Constructor Details

#initialize(field, options) ⇒ PolymorphicHybrid

Returns a new instance of PolymorphicHybrid.



8
9
10
11
12
# File 'lib/generators/brain_damage/lib/views/inputs/polymorphic_hybrid.rb', line 8

def initialize(field, options)
  super
  @normalized_name = name.to_s.gsub('_id', '').gsub('_type', '')
  @initialized_inputs = false
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class BrainDamage::Templateable::FieldTemplateable

Instance Method Details

#initialize_inputsObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/generators/brain_damage/lib/views/inputs/polymorphic_hybrid.rb', line 14

def initialize_inputs
  @inputs = {}

  @options[:inputs].each do |name, options|
    @inputs[name] = {
      name: name,
      model: options[:model],
      label: options[:label],
      input: Factory.create(:input, @field, options)
    }
  end

  @initialized_inputs = true
end

#object_select_nameObject



33
34
35
# File 'lib/generators/brain_damage/lib/views/inputs/polymorphic_hybrid.rb', line 33

def object_select_name
  "#{singular_table_name}[#{@normalized_name}_id]"
end

#specified_inputsObject



37
38
39
40
# File 'lib/generators/brain_damage/lib/views/inputs/polymorphic_hybrid.rb', line 37

def specified_inputs
  initialize_inputs unless @initialized_inputs
  @inputs.values
end

#type_select_nameObject



29
30
31
# File 'lib/generators/brain_damage/lib/views/inputs/polymorphic_hybrid.rb', line 29

def type_select_name
  "#{singular_table_name}[#{@normalized_name}_type]"
end