2017-01-03 4 views
1

Ich bin mit Rails 5. In meinem Modell, habe ich einen Fehler, wenn einer meiner Felder nicht gültig ...Wie entferne ich Klammern, die um meine Rails-Modellfehlermeldung erscheinen?

errors.add(:my_field, 'The field is not in the correct format') 

und dann in meiner Ansicht, zeige ich den Fehler wie so .. .

<% if [email protected][:my_field].empty? %><span class="profileError"> <%= @user.errors[:my_field] %></span><% end %> 

Wenn der Fehler angezeigt wird, scheint es, als

["The field is not in the correct format"] 

wie kann ich von diesen Klammern loszuwerden, um den Fehler angezeigt? Das scheint ein wirklich einfaches Problem zu sein, aber ich weiß nicht, wie sich diese Dinge dort einschleichen.

+0

Ändern Sie diese @ @ user.errors [: my_field] 'in' @ user.errors [: my_field] .first' – sahil

Antwort

2

@user.errors[:my_field] ist ein Array von Fehlermeldungen.

Um alle Fehler anzuzeigen, die Sie tun können ...

@user.errors[:my_field].join(', ') 

Diese Einzelfehler zeigen, wie man es erwarten würde, und mulitple Fehler durch Komma getrennt.

z.B.

['not an integer', 'not less than ten'] 

wird

not an integer, not less than ten 

und

['not an integer'] 

not an integer 
1

In Rails wird der Fehler für ein gegebenes Attribut gibt ein Array da ein Attribut kann mehrere Validierungen fehlschlagen.

Normalerweise verwenden Sie @user.errors.full_messages und dann durchlaufen, obwohl die alle Fehlermeldungen:

<% if @user.errors.any? %> 
<ul> 
    <%= @user.errors.full_messages.each do |m| %> 
    <li><%= m %></li> 
    <% end %> 
</ul> 
<% end %> 

In Ihrem Fall, dass Sie wenn eine bestimmte Taste laufen können:

<% @user.errors[:my_field].each do |msg| %> 
    <span class="profileError"><%= msg %></span> 
<% end if @user.errors[:my_field].any? %> 

Je nachdem, was der gewünschte Ausgang Sie ist kann auch full_messages_for(:my_field) verwenden. Weitere Beispiele finden Sie in der Dokumentation für ActiveModel::Errors.

Verwandte Themen