class Lurker::FormBuilder
Public Class Methods
new(params)
click to toggle source
# File lib/lurker/form_builder.rb, line 3 def initialize(params) @_buffer = '' add_to_buffer(params) end
Public Instance Methods
html()
click to toggle source
# File lib/lurker/form_builder.rb, line 8 def html @_buffer end
Private Instance Methods
add_element_to_buffer(accessors, value)
click to toggle source
# File lib/lurker/form_builder.rb, line 34 def add_element_to_buffer(accessors, value) @_buffer += render( :partial => 'param_form_element', :locals => { :accessor => "#{accessors.compact.join('.')}", :label => "#{print_labels(accessors)}", :label_text => "#{print_labels(accessors)}", :value => value } ) end
add_to_buffer(params, parent_accessors = [])
click to toggle source
# File lib/lurker/form_builder.rb, line 14 def add_to_buffer(params, parent_accessors = []) params.each do |name, value| accessors = parent_accessors.clone << name if value.is_a?(Hash) add_to_buffer(value, accessors) elsif value.is_a?(Array) value.each_with_index do |v, i| if v.is_a?(Hash) add_to_buffer(v, accessors << i) else add_element_to_buffer(accessors, v) end end else add_element_to_buffer(accessors, value) end end end
print_labels(accessors)
click to toggle source
# File lib/lurker/form_builder.rb, line 46 def print_labels(accessors) accessors.inject do |acc, label| if label.is_a? Numeric "#{acc}[]" else "#{acc}[#{label}]" end end end