mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
error_messages_for also takes :message and :header_message options which defaults to the old "There were problems with the following fields:" and "<count> errors prohibited this <object_name> from being saved". Closes #8270.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7870 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
16796dc35f
commit
01cfda7cf2
3 changed files with 24 additions and 12 deletions
|
@ -1,5 +1,7 @@
|
||||||
*SVN*
|
*SVN*
|
||||||
|
|
||||||
|
* error_messages_for also takes :message and :header_message options which defaults to the old "There were problems with the following fields:" and "<count> errors prohibited this <object_name> from being saved". #8270 [rmm5t, zach-inglis-lt3]
|
||||||
|
|
||||||
* Make sure that custom inflections are picked up by map.resources. #9815 [mislav]
|
* Make sure that custom inflections are picked up by map.resources. #9815 [mislav]
|
||||||
|
|
||||||
* Changed SanitizeHelper#sanitize to only allow the custom attributes and tags when specified in the call [DHH]
|
* Changed SanitizeHelper#sanitize to only allow the custom attributes and tags when specified in the call [DHH]
|
||||||
|
|
|
@ -106,11 +106,10 @@ module ActionView
|
||||||
# * <tt>header_tag</tt> - Used for the header of the error div (default: h2)
|
# * <tt>header_tag</tt> - Used for the header of the error div (default: h2)
|
||||||
# * <tt>id</tt> - The id of the error div (default: errorExplanation)
|
# * <tt>id</tt> - The id of the error div (default: errorExplanation)
|
||||||
# * <tt>class</tt> - The class of the error div (default: errorExplanation)
|
# * <tt>class</tt> - The class of the error div (default: errorExplanation)
|
||||||
# * <tt>object</tt> - The object (or array of objects) for which to display errors,
|
# * <tt>object</tt> - The object (or array of objects) for which to display errors, if you need to escape the instance variable convention
|
||||||
# if you need to escape the instance variable convention
|
# * <tt>object_name</tt> - The object name to use in the header, or any text that you prefer. If <tt>object_name</tt> is not set, the name of the first object will be used.
|
||||||
# * <tt>object_name</tt> - The object name to use in the header, or
|
# * <tt>header_message</tt> - The message in the header of the error div. Pass +nil+ or an empty string to avoid the header message altogether. (default: X errors prohibited this object from being saved)
|
||||||
# any text that you prefer. If <tt>object_name</tt> is not set, the name of
|
# * <tt>message</tt> - The explanation message after the header message and before the error list. Pass +nil+ or an empty string to avoid the explanation message altogether. (default: There were problems with the following fields:)
|
||||||
# the first object will be used.
|
|
||||||
#
|
#
|
||||||
# To specify the display for one object, you simply provide its name as a parameter. For example, for the +User+ model:
|
# To specify the display for one object, you simply provide its name as a parameter. For example, for the +User+ model:
|
||||||
#
|
#
|
||||||
|
@ -147,14 +146,17 @@ module ActionView
|
||||||
html[key] = 'errorExplanation'
|
html[key] = 'errorExplanation'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
header_message = "#{pluralize(count, 'error')} prohibited this #{(options[:object_name] || params.first).to_s.gsub('_', ' ')} from being saved"
|
options[:object_name] ||= params.first
|
||||||
|
options[:header_message] = "#{pluralize(count, 'error')} prohibited this #{options[:object_name].to_s.gsub('_', ' ')} from being saved" unless options.include?(:header_message)
|
||||||
|
options[:message] ||= 'There were problems with the following fields:' unless options.include?(:message)
|
||||||
error_messages = objects.map {|object| object.errors.full_messages.map {|msg| content_tag(:li, msg) } }
|
error_messages = objects.map {|object| object.errors.full_messages.map {|msg| content_tag(:li, msg) } }
|
||||||
content_tag(:div,
|
|
||||||
content_tag(options[:header_tag] || :h2, header_message) <<
|
contents = ''
|
||||||
content_tag(:p, 'There were problems with the following fields:') <<
|
contents << content_tag(options[:header_tag] || :h2, options[:header_message]) unless options[:header_message].blank?
|
||||||
content_tag(:ul, error_messages),
|
contents << content_tag(:p, options[:message]) unless options[:message].blank?
|
||||||
html
|
contents << content_tag(:ul, error_messages)
|
||||||
)
|
|
||||||
|
content_tag(:div, contents, html)
|
||||||
else
|
else
|
||||||
''
|
''
|
||||||
end
|
end
|
||||||
|
|
|
@ -207,6 +207,14 @@ class ActiveRecordHelperTest < Test::Unit::TestCase
|
||||||
|
|
||||||
# should space object name
|
# should space object name
|
||||||
assert_dom_equal %(<div class="errorExplanation" id="errorExplanation"><h2>2 errors prohibited this chunky bacon from being saved</h2><p>There were problems with the following fields:</p><ul><li>User email can't be empty</li><li>Author name can't be empty</li></ul></div>), error_messages_for(:user, :post, :object_name => "chunky_bacon")
|
assert_dom_equal %(<div class="errorExplanation" id="errorExplanation"><h2>2 errors prohibited this chunky bacon from being saved</h2><p>There were problems with the following fields:</p><ul><li>User email can't be empty</li><li>Author name can't be empty</li></ul></div>), error_messages_for(:user, :post, :object_name => "chunky_bacon")
|
||||||
|
|
||||||
|
# hide header and explanation messages with nil or empty string
|
||||||
|
assert_dom_equal %(<div class="errorExplanation" id="errorExplanation"><ul><li>User email can't be empty</li><li>Author name can't be empty</li></ul></div>), error_messages_for(:user, :post, :header_message => nil, :message => "")
|
||||||
|
|
||||||
|
# override header and explanation messages
|
||||||
|
header_message = "Yikes! Some errors"
|
||||||
|
message = "Please fix the following fields and resubmit:"
|
||||||
|
assert_dom_equal %(<div class="errorExplanation" id="errorExplanation"><h2>#{header_message}</h2><p>#{message}</p><ul><li>User email can't be empty</li><li>Author name can't be empty</li></ul></div>), error_messages_for(:user, :post, :header_message => header_message, :message => message)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_error_messages_for_non_instance_variable
|
def test_error_messages_for_non_instance_variable
|
||||||
|
|
Loading…
Reference in a new issue