Module: Wedge::Plugins::Render
- Included in:
- Form
- Defined in:
- lib/wedge/plugins/render.rb
Instance Method Summary collapse
- #_error_name(key, error) ⇒ Object
- #display_errors(options = {}, &block) ⇒ Object (also: #render_errors)
- #render_values(dom = false, key = false, data = false) ⇒ Object
Instance Method Details
#_error_name(key, error) ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/wedge/plugins/render.rb', line 95 def _error_name key, error case error.to_s.to_sym when :not_email 'Email Isn\'t Valid.' when :not_present 'Required.' when :not_equal 'Password does not match.' else !error.to_s[/\s/] ? error.to_s.gsub(/_/, ' ').titleize : error end end |
#display_errors(options = {}, &block) ⇒ Object Also known as: render_errors
4 5 6 7 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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/wedge/plugins/render.rb', line 4 def display_errors = {}, &block dom = .delete(:dom) || [:dom] d_errors = errors.deep_dup if override_errors = [:override_errors] d_errors = override_errors end keys = .delete(:keys) || ([:key] ? [[:key]] : []) [:position] ||= :before if extra_errors = .delete(:errors) extra_errors.each do |key, value| d_errors[key] = value end end d_errors.each do |key, error| d_keys = (keys.dup << key) if error.is_a?(IndifferentHash) = .dup [:keys] = d_keys [:override_errors] = d_errors[key] display_errors , &block elsif !block_given? || block.call(d_keys, error.first) == false name = d_keys.each_with_index.map do |field, i| i != 0 ? "[#{field}]" : field end.join if tmpl = [:tmpl] if client? field_error_dom = DOM.new(`#{tmpl.dom}[0].outerHTML`) else field_error_dom = DOM.new(tmpl.dom.to_html) end else field_error_dom = DOM.new('<span class="field-error"><span>') end field_error_dom.html _error_name(key, error.first) field = dom.find("[name='#{name}']") field.send([:position], field_error_dom.dom) end end end |
#render_values(dom = false, key = false, data = false) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/wedge/plugins/render.rb', line 54 def render_values dom = false, key = false, data = false dom = [:dom] unless dom key = [:key] if !key && .key?(:key) dom.find('input, select, textarea') do |element| name = element['name'] next if name.nil? name = name.gsub(/\A#{key}/, '') if key keys = name.gsub(/\A\[/, '').gsub(/[^a-z0-9_]/, '|').gsub(/\|\|/, '|').gsub(/\|$/, '').split('|') value = false keys.each do |k| begin value = value != false ? value.send(k) : send(k) rescue value = '' end end case element.name when 'select' element.find('option') do |x| x['selected'] = true if x['value'] == value.to_s end when 'input' if %w(radio checkbox).include? element['type'] if element['value'] == value.to_s element['checked'] = true else element.delete 'checked' end else value = sprintf('%.2f', value) if value.is_a? BigDecimal element['value'] = value.to_s end when 'textarea' element.val value.to_s end end end |