| 123456789101112131415161718192021222324252627 |
- ## Overriding ActionView::Base.field_error_proc in Rails
- ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
- html = %(<div class="field_with_errors">#{html_tag}</div>).html_safe
- # add nokogiri gem to Gemfile
- form_fields = [
- 'textarea',
- 'input',
- 'select'
- ]
- elements = Nokogiri::HTML::DocumentFragment.parse(html_tag).css "label, " + form_fields.join(', ')
-
- elements.each do |e|
- if e.node_name.eql? 'label'
- html = %(<div class="has-error">#{e}</div>).html_safe
- elsif form_fields.include? e.node_name
- if instance.error_message.kind_of?(Array)
- html = %(<div class="has-error">#{html_tag}<span class="help-block"> #{instance.error_message.uniq.join(', ')}</span></div>).html_safe unless html_tag =~ /hidden/
- else
- html = %(<div class="has-error">#{html_tag}<span class="help-block"> #{instance.error_message}</span></div>).html_safe unless html_tag =~ /hidden/
- end
- end
- end
- html
- end
|