Module | ArkanisDevelopment::SimpleLocalization::LocalizedActiveRecordHelpers::Rails12 |
In: |
lib/features/localized_active_record_helpers.rb
|
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
# 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