From e3898491f2960890d866bfe08e221a4cb52cfccc Mon Sep 17 00:00:00 2001 From: Michael Koziarski Date: Thu, 19 Jan 2006 08:47:18 +0000 Subject: [PATCH] make error_messages_for return "" for nil objects git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3438 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_view/helpers/active_record_helper.rb | 4 +++- actionpack/test/template/active_record_helper_test.rb | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 4cdd6c555f..ec0216f565 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* allow nil objects for error_messages_for [Michael Koziarski] + * Refactor human_size to exclude decimal place if it is zero. [Marcel Molina Jr.] * Update to Prototype 1.5.0_pre0 [Sam Stephenson] diff --git a/actionpack/lib/action_view/helpers/active_record_helper.rb b/actionpack/lib/action_view/helpers/active_record_helper.rb index 41d63fbc9a..dccae1db41 100644 --- a/actionpack/lib/action_view/helpers/active_record_helper.rb +++ b/actionpack/lib/action_view/helpers/active_record_helper.rb @@ -103,7 +103,7 @@ module ActionView def error_messages_for(object_name, options = {}) options = options.symbolize_keys object = instance_variable_get("@#{object_name}") - unless object.errors.empty? + if object && !object.errors.empty? content_tag("div", content_tag( options[:header_tag] || "h2", @@ -113,6 +113,8 @@ module ActionView content_tag("ul", object.errors.full_messages.collect { |msg| content_tag("li", msg) }), "id" => options[:id] || "errorExplanation", "class" => options[:class] || "errorExplanation" ) + else + "" end end diff --git a/actionpack/test/template/active_record_helper_test.rb b/actionpack/test/template/active_record_helper_test.rb index acff1b5e40..e153e630ab 100644 --- a/actionpack/test/template/active_record_helper_test.rb +++ b/actionpack/test/template/active_record_helper_test.rb @@ -119,6 +119,10 @@ class ActiveRecordHelperTest < Test::Unit::TestCase assert_dom_equal %(

1 error prohibited this post from being saved

There were problems with the following fields:

), error_messages_for("post") assert_equal %(

1 error prohibited this post from being saved

There were problems with the following fields:

), error_messages_for("post", :class => "errorDeathByClass", :id => "errorDeathById", :header_tag => "h1") end + + def test_error_messages_for_handles_nil + assert_equal "", error_messages_for("notthere") + end def test_form_with_string_multipart assert_dom_equal(