[Ror-es] Errores personalizados
David Siñuela
siu.4coders at gmail.com
Wed Nov 9 14:58:20 GMT 2005
Yo también uso un fichero como el de traducciones.rb con el siguiente contenido:
------------
Inflector.inflections do |inflect|
inflect.plural /$/, 'es'
inflect.plural /s$/, 's'
inflect.plural /z$/i, 'ces'
inflect.plural /([aeiou])$/i, '\1s'
inflect.plural /_(.*)$/, 's_\1'
inflect.singular /s$/i, ''
inflect.singular /ces$/i, 'z'
inflect.singular /(.*)s_(.*)/i, '\1_\2'
inflect.irregular 'user', 'users'
inflect.irregular 'estado_civil', 'estados_civiles'
inflect.uncountable %w( pantalones ) # xD
end
class ActiveRecord::Errors
def full_messages
full_messages = []
@errors.each_key do |attr|
@errors[attr].each do |msg|
next if msg.nil?
if attr == "base"
full_messages << msg
else
# full_messages << @base.class.human_attribute_name(attr) + " " + msg
full_messages << msg
end
end
end
return full_messages
end
end
module ActionView
module Helpers
module ActiveRecordHelper
# Ayudante para mostrar el contenido del flash
def mostrar_flash
return if @flash.empty?
a = ''
@flash.each do |i|
a << "<div id=\"flash-div\" class=\"flash-#{i[0]}\"
style=\"display:none\">"
a << '<p><strong class="alerta">Aviso:</strong> ' + i[-1] + '</p>'
a << '</div>'
end
a
end
alias :show_flash :mostrar_flash
def error_messages_for(object_name, options = {})
options = options.symbolize_keys
object = instance_variable_get("@#{object_name}")
unless object.errors.empty?
content_tag("div",
content_tag(
options[:header_tag] || "h2",
"El #{object_name.to_s.gsub("_", " ")} no puede ser guardado."
) +
content_tag("p", "Se encontraron los siguientes errores:") +
content_tag("ul", object.errors.full_messages.collect { |msg|
content_tag("li", msg) }),
"id" => options[:id] || "errorExplanation", "class" =>
options[:class] || "errorExplanation"
)
end
end
end
end
end
class Time
# Formateo corto de una fecha
def short_format
self.strftime("%Y-%m-%d")
end
end
-------------
Funciona para rails 0.14.x, a tener en cuenta:
* Como no muestro el nombre del campo en el mensaje de error tengo
que reescribir todos los mensajes de error para dar un mensaje con
sentido.
* Se da por hecho que en el flash sólo hay un mensaje por cada índice del hash
Y bueno, eso es lo que hay.
Saludos.
El 9/11/05, Luis José Da Silva González<luisjoseve at gmail.com> escribió:
> Gracias.
>
> El 9/11/05, Vicente Reig<vicente.reig at gmail.com> escribió:
> > Hi,
> > yo tengo esto en mi environment.rb:
> >
> > ActiveRecord::Errors.default_error_messages = {
> > :inclusion => "no está incluido en la lista",
> > :exclusion => "es un campo reservado",
> > :invalid => "no es válido",
> > :confirmation => "no está confirmado",
> > :accepted => "debe ser aceptado",
> > :empty => "no puede estar vacío",
> > :too_long => "es demasiado largo (%d caracteres como máximo)",
> > :too_short => "es demasiado corto (%d caracteres como mínimo)",
> > :wrong_length => "debe tener %d caracteres",
> > :taken => "ya se ha selecccionado",
> > :not_a_number => "no es un número"
> > }
> >
> > Que viene a ser más o menos lo mismo que lo que hace Vicente.
> >
> > Un saludo, Vicente. (es decir yo :-) )
> >
> >
> > On 11/9/05, Vicente Gallur Valero <vicente at vgcomunicacion.com> wrote:
> > > >
> > > >
> > > >Me imagino que a todos nostros no nos conviene mucho el mensaje de
> > > >notificación de errores en los forms por validación, 1 error
> > > >prohibited .... etc etc, alguno de ustedes sabe cómo cambiar ese
> > > >mensaje a español?
> > > >
> > >
> > > De momento yo tengo un archivo traducciones.rb en /lib semejante a esto:
> > >
> > >
> > Date::MONTHNAMES=["","Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"]
> > >
> > > module ActiveRecord
> > > class Errors
> > > begin
> > > @@default_error_messages = {
> > > :inclusion => "no está incluido en la lista",
> > > :exclusion => "está reservado",
> > > :invalid => "no es válido",
> > > :confirmation => "no es una confirmacion",
> > > :accepted => "debe ser aceptado",
> > > :empty => "no puede estar vacío",
> > > :blank => "no puede estar en blanco",
> > > :too_long => "es demasiado largo (máximo %d caracteres)",
> > > :too_short => "es demasiado corto (mínimo %d caracteres)",
> > > :wrong_length => "no tiene la longitud correcta (debería tener %d
> > > caracteres)",
> > > :taken => "ya ha sido escogido",
> > > :not_a_number => "debe ser un número",
> > > }
> > > end
> > > end
> > > end
> > >
> > >
> > > module ActionView #nodoc
> > > module Helpers
> > > module ActiveRecordHelper
> > > def error_messages_for(object_name, options = {})
> > > options = options.symbolize_keys
> > > object = instance_variable_get("@#{object_name}")
> > > unless object.errors.empty?
> > > content_tag("div",
> > > content_tag(
> > > options[:header_tag] || "h2",
> > > "Hay errores que impiden guardar el registro"
> > > ) +
> > > content_tag("p", "Compruebe los siguientes campos:") +
> > > content_tag("ul",
> > object.errors.full_messages.collect {
> > > |msg| content_tag("li", msg) }), "id" => options[:id] ||
> > > "errorExplanation", "class" => options[:class] || "errorExplanation" )
> > > end
> > > end
> > > end
> > > end
> > > end
> > >
> > > y en /controllers/application.rb lo incluyo:
> > >
> > > require 'traducciones'
> > >
> > > --
> > > Vicente Gallur Valero
> > > http://www.vgcomunicacion.com
> > >
> > > _______________________________________________
> > > Ror-es mailing list
> > > Ror-es at lists.simplelogica.net
> > > http://lists.simplelogica.net/mailman/listinfo/ror-es
> > >
> >
> >
> >
> > --
> > Vicente Reig Rincón de Arellano
> > http://weblogs.javahispano.org/page/vitxo/
> > _______________________________________________
> > Ror-es mailing list
> > Ror-es at lists.simplelogica.net
> > http://lists.simplelogica.net/mailman/listinfo/ror-es
> >
> >
> >
>
>
> --
> Luis José Da Silva G.
> _______________________________________________
> Ror-es mailing list
> Ror-es at lists.simplelogica.net
> http://lists.simplelogica.net/mailman/listinfo/ror-es
>
--
------------------------------------------
David Siñuela Pastor (siu)
http://www.4coders.com
Jabber: siu at jabberes.org
More information about the Ror-es
mailing list