2011-08-19 11 views
9

Puedo localizar un mensaje de error para cada validación, pero ¿cómo puedo crear un error para un modelo en particular?i18n: localización de mensajes de error para el modelo particular

local ordinario es el siguiente:

en: 
    mongoid: 
    errors: 
     messages: 
     taken: "It is already taken" 

Pero quiero cambiar el mensaje para user modelo:

en: 
    mongoid: 
    errors: 
     messages: 
     taken: "It is already taken" 
     user: 
      taken: "It is already taken. %{link_to 'Remember password', reset_password_path'}" 

Respuesta

28

Prueba esto:

en: 
    mongoid: 
    errors: 
     messages: 
     taken: "It is already taken" 
     models: 
     user: 
      attributes: 
      login: 
       taken: "It is already taken. %{link}" 

Referencia:

ActiveRecord code comments

PS: La cadena de localización debe utilizar la variable de interpolación para la sustitución dinámica.

por ejemplo: Añadir un error en el campo de la user objeto login:

user.errors.add(:login, :taken, :link => "foo") 
+0

¿Puede explicar cómo sabes que? ¿Cómo puedo entender el camino a lo que necesito en las localizaciones? PD: como enlace, simplemente uso brutal HTML sin formato – fl00r

+0

Se menciona en los comentarios del código ActiveRecord. Supuse que el mangoid podría seguir la misma convención. –

+0

Intenté esto para agregar un enlace a mi formulario de restablecimiento de contraseña pero sigo obteniendo este error: 'argumento de interpolación faltante en" no es válido. Haz clic en% {link} para volver a enviarte la contraseña. Confirmation "({: model =>" Usuario ",: atributo =>" Contraseña token ",: valor => nil} dado)'. ¿Ha cambiado algo en Rails 3.1? – David

Cuestiones relacionadas