2016-07-26 19 views
0

In meinem Formular, das eine Kreditkarte Validierung Formular ist, habe ich 2 Felder expiry_year und expiry_month.benutzerdefinierte Fehlerfeld Kombination von 2 Fehlerfelder in Schienen

validates :expiry_month, 
      length: { is: 2, allow_blank: true }, 
      numericality: { only_integer: true, allow_blank: true } 
    validates :expiry_year, 
      length: { is: 4, allow_blank: true }, 
      numericality: { only_integer: true, allow_blank: true } 

Allerdings mag ich einen versteckten Verfall Feld haben, die in der Form, wie rot zeigt, wenn die 2 über Felder nicht gültig sind.

Also wird das Formular in etwa so aussehen, aber ich brauche das Expiry-Label, um in der Validierung rot zu sein, Wie kann ich das tun?

enter image description here Hier ist, wie die Felder in der form.html.haml für die Ansicht aussehen.

= f.label 'Expiry' 
= f.text_field :expiry_month, placeholder: 'MM', maxlength: 2 
= f.text_field :expiry_year, placeholder: 'YYYY', maxlength: 4 

Antwort

0

Es scheint, dass Sie es wie folgt tun:

Wenn Sie eine Fehlerklasse haben Sie für die Fehler und zeigt die Klasse in der Ansicht überprüfen.

.error { color: #9d1d20; }

- if @donation.errors.messages.keys.any? { |k| k.match(/expiry/) } 
    = f.label 'Expiry', class: "form-label-expiry error" 
- else 
    = f.label 'Expiry', class: "form-label-expiry" 
    = f.text_field :expiry_month, autocomplete: "off" 
    = f.text_field :expiry_year, autocomplete: "off"