diff options
author | Paco Guzman <fjguzman@aspgems.com> | 2010-03-27 16:16:57 +0100 |
---|---|---|
committer | wycats <wycats@gmail.com> | 2010-03-28 17:27:10 -0700 |
commit | 878a9e02f662516d0d70c44beb1a3f4297342896 (patch) | |
tree | 0c02daef64f752bad749d03c253376178e56e77c /actionpack/lib/action_view/helpers | |
parent | 26bc5c542e41037fcdcf7b831d9cbbbe3bf8c96a (diff) | |
download | rails-878a9e02f662516d0d70c44beb1a3f4297342896.tar.gz rails-878a9e02f662516d0d70c44beb1a3f4297342896.tar.bz2 rails-878a9e02f662516d0d70c44beb1a3f4297342896.zip |
html_tag option to wrap error_message_on text [#4283 state:resolved]
Signed-off-by: wycats <wycats@gmail.com>
Diffstat (limited to 'actionpack/lib/action_view/helpers')
-rw-r--r-- | actionpack/lib/action_view/helpers/active_model_helper.rb | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/actionpack/lib/action_view/helpers/active_model_helper.rb b/actionpack/lib/action_view/helpers/active_model_helper.rb index 80b3d3a664..bbfac32322 100644 --- a/actionpack/lib/action_view/helpers/active_model_helper.rb +++ b/actionpack/lib/action_view/helpers/active_model_helper.rb @@ -97,10 +97,10 @@ module ActionView end # Returns a string containing the error message attached to the +method+ on the +object+ if one exists. - # This error message is wrapped in a <tt>DIV</tt> tag, which can be extended to include a <tt>:prepend_text</tt> - # and/or <tt>:append_text</tt> (to properly explain the error), and a <tt>:css_class</tt> to style it - # accordingly. +object+ should either be the name of an instance variable or the actual object. The method can be - # passed in either as a string or a symbol. + # This error message is wrapped in a <tt>DIV</tt> tag by default or with <tt>:html_tag</tt> if specified, + # which can be extended to include a <tt>:prepend_text</tt> and/or <tt>:append_text</tt> (to properly explain + # the error), and a <tt>:css_class</tt> to style it accordingly. +object+ should either be the name of an + # instance variable or the actual object. The method can be passed in either as a string or a symbol. # As an example, let's say you have a model <tt>@post</tt> that has an error message on the +title+ attribute: # # <%= error_message_on "post", "title" %> @@ -112,25 +112,28 @@ module ActionView # <%= error_message_on "post", "title", # :prepend_text => "Title simply ", # :append_text => " (or it won't work).", + # :html_tag => "span", # :css_class => "inputError" %> + # # => <span class="inputError">Title simply can't be empty (or it won't work).</span> def error_message_on(object, method, *args) options = args.extract_options! unless args.empty? ActiveSupport::Deprecation.warn('error_message_on takes an option hash instead of separate ' + - 'prepend_text, append_text, and css_class arguments', caller) + 'prepend_text, append_text, html_tag, and css_class arguments', caller) options[:prepend_text] = args[0] || '' options[:append_text] = args[1] || '' - options[:css_class] = args[2] || 'formError' + options[:html_tag] = args[2] || 'div' + options[:css_class] = args[3] || 'formError' end - options.reverse_merge!(:prepend_text => '', :append_text => '', :css_class => 'formError') + options.reverse_merge!(:prepend_text => '', :append_text => '', :html_tag => 'div', :css_class => 'formError') object = convert_to_model(object) if (obj = (object.respond_to?(:errors) ? object : instance_variable_get("@#{object}"))) && (errors = obj.errors[method]).presence - content_tag("div", - "#{options[:prepend_text]}#{ERB::Util.h(errors.first)}#{options[:append_text]}".html_safe, + content_tag(options[:html_tag], + (options[:prepend_text].html_safe << errors.first).safe_concat(options[:append_text]), :class => options[:css_class] ) else |