Overriding

Como algunos de nosotros hemos visto en Rails, cuando ocurre un error en algun dato de un formulario, el comportamiento por defecto de Rails es envolver los campos con errores dentro de una etiqueta “<div class=’field_with_errors’></div>”. Esta etiqueta a veces rompe el maquetado de la pagina agregando espacios no deseados.

Este comportamiento esta deteminado dentro de ActionView::Base de rails en forma de proc:

@@field_error_proc = Proc.new{ |html_tag, instance| 
"<div class=\"fieldWithErrors\">#{html_tag}</div>" 
}
 cattr_accessor :field_error_proc
end

Por lo tanto podemos hacer un Overriding y hacer que el proc genere un <span></span> en lugar del problematico div, esto lo hacemos en el application.rb:

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
'<span class="fieldWithErrors">'.html_safe << html_tag << '</span>'.html_safe
end

El codigo anterior no genera los espacios no deseados y ademas es igual de configurable, y usa .html_safe para asegurar que corra en Rails 3.

Esta entrada fue publicada en Uncategorized. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s