-
Notifications
You must be signed in to change notification settings - Fork 630
/
errors.rb
66 lines (54 loc) · 2.06 KB
/
errors.rb
1
2
3
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
module Formtastic
module Inputs
module Base
module Errors
def error_html
errors? ? send(:"error_#{builder.inline_errors}_html") : ""
end
def error_sentence_html
error_class = options[:error_class] || builder.default_inline_error_class
template.content_tag(:p, Formtastic::Util.html_safe(errors.to_sentence.html_safe), :class => error_class)
end
def error_list_html
error_class = options[:error_class] || builder.default_error_list_class
list_elements = []
errors.each do |error|
list_elements << template.content_tag(:li, Formtastic::Util.html_safe(error.html_safe))
end
template.content_tag(:ul, Formtastic::Util.html_safe(list_elements.join("\n")), :class => error_class)
end
def error_first_html
error_class = options[:error_class] || builder.default_inline_error_class
template.content_tag(:p, Formtastic::Util.html_safe(errors.first.untaint), :class => error_class)
end
def error_none_html
""
end
def errors?
!errors.blank?
end
def errors
errors = []
if object && object.respond_to?(:errors)
error_keys.each do |key|
unless object.errors[key].blank?
if builder.attribute_names_on_errors
errors << object.errors[key].each_with_index.map { |err, idx| (idx==0) ? "#{key.to_s.titleize} #{err}" : err }
else
errors << object.errors[key]
end
end
end
end
errors.flatten.compact.uniq
end
def error_keys
keys = [method.to_sym]
keys << builder.file_metadata_suffixes.map{|suffix| "#{method}_#{suffix}".to_sym} if file?
keys << association_primary_key if belongs_to? || has_many?
keys.flatten.compact.uniq
end
end
end
end
end