2016-06-01 13 views
0

Ich möchte Schienen Fehlermeldung Standard zeigenWo stelle ich die Vorlage für Schienen Fehlermeldungen ein?

Field <field name> can't be blank 

aber unter Verwendung bedeutet, dass ich

<field name> Field <field name> can't be blank 

hier ein minimales Beispiel Reproduzieren des Problems: Validierung

rails new test 
cd test 
rails g scaffold user name 
rake db:migrate 

hinzufügen app/models/user.rb:

class User < ActiveRecord::Base 
    validates :name, presence: true 
end 

bearbeiten config/locale/en.yml sein:

en: 
    activerecord: 
    attributes: 
     user: 
     name: "Name" 
    errors: 
     models: 
     user: 
      attributes: 
      name: 
       blank: "Field %{attribute} can't be blank" 

Danach den Server

rails s 

Punkt Browser http://localhost:3000/users/new und drücken Sie "Create User" -Taste starten. Sie erhalten:

enter image description here

Offenbar gibt es eine andere Vorlage irgendwo, die wie etwas sagt

%{attribute} %{message} 

aber ich kann es nicht finden in Schienen-Code.

+0

Mögliche Duplikat http://stackoverflow.com/questions/808547/fully-custom-validation-error- Nachricht-mit-Schienen – aliibrahim

+0

@aliibrahim: Ich sah es aber leider - es ist kein Duplikat. – Adobe

Antwort

1

Dies liegt daran, in einem Standard von Gerüst erzeugt Ansicht (views/users/_form.html.erb) Sie haben:

<% user.errors.full_messages.each do |message| %> 

Dies ist, was gibt

Name Feldname nicht leer sein

Stattdessen können Sie die Sicht _form ändern und user.errors.messages verwenden, wo Sie einen Hash mit Fehlern erhalten, die Schlüssel rep zugeordnet sind übelnehmend Felder:

@user.errors.messages 
{:name=>["Field Name can't be blank"]} 

zu bekommen, was Sie erwarten, dass Sie zum Beispiel schreiben könnte:

<% @user.errors.messages.values.flatten.each do |message| %> 
    <li><%= message %></li> 
<% end %>