Class: Interview::NestedForm
- Includes:
- HasControls
- Defined in:
- lib/interview/nested_form.rb
Instance Attribute Summary collapse
-
#align ⇒ Object
todo: align einbauen.
-
#form_builder ⇒ Object
readonly
Returns the value of attribute form_builder.
-
#image_based ⇒ Object
todo: align einbauen.
-
#object ⇒ Object
readonly
Returns the value of attribute object.
-
#polymorphic ⇒ Object
todo: align einbauen.
Attributes included from HasControls
Attributes inherited from Control
Instance Method Summary collapse
- #render ⇒ Object
- #render_nested_form(form_builder) ⇒ Object
- #render_polymorphic_nested_form(form_builder) ⇒ Object
Methods included from HasControls
#add_control, #add_controls, included, #initialize, #siblings
Methods inherited from Control
#ancestors, build, definition, #find_attribute, #find_attribute!, inherited, #initialize, #set_attributes, #set_defaults
Instance Attribute Details
#align ⇒ Object
todo: align einbauen
5 6 7 |
# File 'lib/interview/nested_form.rb', line 5 def align @align end |
#form_builder ⇒ Object (readonly)
Returns the value of attribute form_builder.
6 7 8 |
# File 'lib/interview/nested_form.rb', line 6 def form_builder @form_builder end |
#image_based ⇒ Object
todo: align einbauen
5 6 7 |
# File 'lib/interview/nested_form.rb', line 5 def image_based @image_based end |
#object ⇒ Object (readonly)
Returns the value of attribute object.
6 7 8 |
# File 'lib/interview/nested_form.rb', line 6 def object @object end |
#polymorphic ⇒ Object
todo: align einbauen
5 6 7 |
# File 'lib/interview/nested_form.rb', line 5 def polymorphic @polymorphic end |
Instance Method Details
#render ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/interview/nested_form.rb', line 8 def render assoc_form_builder = find_attribute! :form_builder assoc_method = find_attribute! :assoc_method html = Builder::XmlMarkup.new html.div class: 'nested_form_container' do if @image_based html << Interview::NestedFormAddImages.new.render end html << assoc_form_builder.fields_for(assoc_method.to_sym) do |form_builder| if @polymorphic render_polymorphic_nested_form(form_builder) else render_nested_form(form_builder) end end html.script class: 'nested_form_script', type: 'text/x-tmpl' do new_object = assoc_form_builder.object.association(assoc_method.to_sym).build # todo: polymorphic add link html << assoc_form_builder.fields_for(assoc_method.to_sym, new_object, :child_index => "${index}") do |form_builder| if @polymorphic render_polymorphic_nested_form(form_builder) else render_nested_form(form_builder) end end end end return html.target! end |
#render_nested_form(form_builder) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/interview/nested_form.rb', line 38 def render_nested_form(form_builder) @form_builder = form_builder @object = form_builder.object html = Builder::XmlMarkup.new html.div class: 'nested_form collapse in' do @controls.each do |control| html << control.render end html << form_builder.hidden_field(:id) html << form_builder.hidden_field(:_destroy, class: 'nested_form_destroy') if @image_based html << form_builder.hidden_field(:upload_buffer_id, class: 'upload_buffer_id') end end html.target!.html_safe end |
#render_polymorphic_nested_form(form_builder) ⇒ Object
55 56 57 58 59 60 61 62 63 |
# File 'lib/interview/nested_form.rb', line 55 def render_polymorphic_nested_form(form_builder) object = form_builder.object if klass = "#{object.class.name}NestedForm".safe_constantize nested_form = klass.new(parent: self) return nested_form.render_nested_form(form_builder) else return self.render_nested_form(form_builder) end end |