Module ArkanisDevelopment::SimpleLocalization::LocalizedActiveRecordHelpers::Rails12
In: lib/features/localized_active_record_helpers.rb

Methods

Public Instance methods

Provides a localized version of the error_messages_for helper. This helper just localizes the heading and first paragraph of the error box. The error messages itself are localized by the localized_models and localized_error_messages features.

It also gives you the possibility to define your own way of generating the HTML output by specifying a block:

  error_messages_for :record do |objects, header_message, description, error_messages, localized_object_name, count|
    content_tag(:p, header_message) +
    content_tag(:ul, error_messages.collect{|msg| content_tag :li, msg}.join("\n"))
  end

[Source]

     # File lib/features/localized_active_record_helpers.rb, line 57
 57:       def error_messages_for(*params)
 58:         options = params.last.is_a?(Hash) ? params.pop.symbolize_keys : {}
 59:         objects = params.collect {|object_name| instance_variable_get("@#{object_name}") }.compact
 60:         count   = objects.inject(0) {|sum, object| sum + object.errors.count }
 61:         
 62:         unless count.zero?
 63:           html = {}
 64:           
 65:           [:id, :class].each do |key|
 66:             if options.include?(key)
 67:               value = options[key]
 68:               html[key] = value unless value.blank?
 69:             else
 70:               html[key] = 'errorExplanation'
 71:             end
 72:           end
 73:           
 74:           lang = Language[:helpers, :error_messages_for].symbolize_keys
 75:           localized_object_name = if options[:object_name]
 76:             options[:object_name]
 77:           elsif objects.first.class.respond_to?(:localized_model_name)
 78:             objects.first.class.localized_model_name
 79:           else
 80:             params.first.to_s.gsub('_', ' ')
 81:           end
 82:           
 83:           header_message_mask = lang[:heading][count] || lang[:heading]['n']
 84:           header_message = format header_message_mask, count, localized_object_name
 85:           description = lang[:description]
 86:           error_messages = objects.collect{|object| object.errors.full_messages}.flatten
 87:           
 88:           unless block_given?
 89:             content_tag(:div,
 90:               content_tag(options[:header_tag] || :h2, header_message) <<
 91:                 content_tag(:p, description) <<
 92:                 content_tag(:ul, error_messages.collect{|msg| content_tag(:li, msg)}.join("\n")),
 93:               html
 94:             )
 95:           else
 96:             yield objects, header_message, description, error_messages, localized_object_name, count
 97:           end
 98:         else
 99:           ''
100:         end
101:       end

[Validate]