2013-07-10 6 views
6

Ich verwende in meiner Anwendung "Ruby on Rails" einen Edelstein. Bei einer Benutzeranmeldung, wenn eine E-Mail bereits existiert, gibt es eine Standardnachricht "E-Mail wurde bereits vergeben".Ändern der Geräte-Nachricht "Die E-Mail-Adresse wurde bereits vergeben"

Ich habe diese Nachricht in en.yml geändert

activerecord: 
    errors: 
     messages: 
     taken: "User with same email already exists. Please try with another email address." 

Im Hinblick habe ich verwendet:

<div class="notice"><%= devise_error_messages! %></div> 

Nun ist die Nachricht i immer bin

"Email User with same email already exists. Please try with another email address." 

ist Das Problem ist, dass "Email" am Anfang angehängt wird.

Gibt es eine andere Möglichkeit, diese Standardnachricht zu ändern?

+0

Eine weitere Option Update zu tun: https://stackoverflow.com/questions/9006270/where-can-i-change-the-email -has-already-taken-error-message – user1515295

Antwort

7

ändern Format der Nachricht an

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

Standard ist "%{attribute} %{message}"

UPDATE

Es gibt eine andere Lösung. Ich weiß, dass dies eine Arbeit ist, aber hier geht .. Entfernen Sie die vorhandene Validierung, und fügen Sie eine benutzerdefinierte hinzu.

validate :email_uniqueness 

def email_uniqueness 
    self.errors.add(:base, 'User with same email already exists. Please try with another email address.') if User.where(:email => self.email).exists? 
end 

Hinweis: Sie sollten die vorhandenen Benutzer betrachten, während ein

+0

Danke für die Antwort. Es funktioniert. Kann ich das Format für diese Nachricht nur ändern? – Arif

+0

AFIK, du kannst nicht. Sie müssen alle anderen Nachrichten interpolieren, um den Attributnamen aufzunehmen. Oder, anstatt das Standardformat zu ändern, könnten Sie eine Regex-Ersetzung in der Fehlermeldungsdatei vornehmen. – Santhosh

+0

Bitte überprüfen Sie meine Bearbeitung – Santhosh

Verwandte Themen