From 005371e16cf214509bb988dcf5d0eef3ee23157d Mon Sep 17 00:00:00 2001
From: David Heinemeier Hansson <david@loudthinking.com>
Date: Wed, 1 Dec 2004 13:59:16 +0000
Subject: Added options to tailor header tag, div id, and div class on
 ActiveRecordHelper#error_messages_for [josh]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@41 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
---
 .../action_view/helpers/active_record_helper.rb    | 24 +++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

(limited to 'actionpack/lib')

diff --git a/actionpack/lib/action_view/helpers/active_record_helper.rb b/actionpack/lib/action_view/helpers/active_record_helper.rb
index b02b807fe1..de18696992 100644
--- a/actionpack/lib/action_view/helpers/active_record_helper.rb
+++ b/actionpack/lib/action_view/helpers/active_record_helper.rb
@@ -76,14 +76,24 @@ module ActionView
         end
       end
       
-      def error_messages_for(object_name)
-        object = instance_eval("@#{object_name}")
+      # Returns a string with a div containing all the error messages for the object located as an instance variable by the name
+      # of <tt>object_name</tt>. This div can be tailored by the following options:
+      #
+      # ::header_tag: Used for the header of the error div (default: h2)
+      # ::id: The id of the error div (default: errorExplanation)
+      # ::class: The class of the error div (default: errorExplanation)
+      def error_messages_for(object_name, options={})
+        object = instance_eval "@#{object_name}"
         unless object.errors.empty?
-          "<div id=\"errorExplanation\">" +
-          "<h2>#{object.errors.count} error#{"s" unless object.errors.count == 1} prohibited this #{object_name.gsub("_", " ")} from being saved</h2>" +
-          "<p>There were problems with the following fields (marked in red below):</p>" +
-          "<ul>#{object.errors.full_messages.collect { |msg| "<li>#{msg}</li>"}}</ul>" +
-          "</div>"
+          content_tag("div",
+            content_tag(
+              options[:header_tag] || "h2", 
+              "#{pluralize(object.errors.count, "error")} prohibited this #{object_name.gsub("_", " ")} from being saved"
+            ) +
+            content_tag("p", "There were problems with the following fields:") +
+            content_tag("ul", object.errors.full_messages.collect { |msg| content_tag("li", msg) }),
+            "id" => options[:id] || "errorExplanation", "class" => options[:class] || "errorExplanation"
+          )
         end
       end
       
-- 
cgit v1.2.3