2010-06-01 22 views
7

Tengo un simple validación de registro activo en un objeto usando esto dentro de un formulario:Quitar campo de mensaje de validación objeto

salidas
form.error_messages({:message => '', :header_message => ''}) 

Esto a su vez algo así como "Mi mensaje NombreCampo personalizado"

Lo que necesito hacer es eliminar el nombre del campo del mensaje de error pero dejar mi mensaje personalizado.

¿Alguien puede indicarme la dirección correcta para esto?

Respuesta

9

Una manera de tener un control completo sobre los mensajes es utilizar un bloque personalizado validate en el modelo. p.ej. para comprobar que un campo no está en blanco, sería de esta manera:

class MyModel < ActiveRecord::Base 
    validate do |model| 
    model.errors.add_to_base("My Custom message") if user.field.blank? 
    end 
end 

add_to_base está destinada a la adición de los mensajes que no están relacionados con un campo individual en particular (por ejemplo, si una combinación de varios campos es ilegal). Esto significa que el CSS para resaltar su campo no válido no se agregará. Puede solucionar esto añadiendo un mensaje nulo a los errores de su campo, p.

model.errors.add(:field, nil) 

alternativa, echa un vistazo a custom-err-message plug-in - este plugin le da la opción de no tener su mensaje de error de validación con el prefijo del nombre del atributo.

Actualización:

add_to_base está obsoleta desde Rails 3. En la siguiente se puede utilizar en su lugar: model_instance.errors.add(:base, "Msg")
Ref: https://apidock.com/rails/ActiveRecord/Errors/add_to_base

+0

Saludos mikej, el plugin de err-mensaje personalizado hizo lo que yo quería – pythonandchips

+0

También hay una [gema] (https://github.com/thethanghn/custom-err-msg) que funcionó para mí en Rails 4 – dusan

0

Puede acceder errors la instancia del objeto directamente si necesita un control completo sobre cómo se presentan los mensajes.

7

En los carriles 3.2.6, se puede establecer esto en un archivo de configuración regional (por ejemplo, config/lugares/en.yml):

en: 
    errors: 
    format: "%{message}" 

De lo contrario, el formato por defecto es "% {atributo} {% mensaje}".

+1

Esto también funciona en 4.0.2. – Deborah

+0

Aún trabajando en 4.1.1 –

Cuestiones relacionadas