2016-07-21 8 views

Antwort

-1

folgende Unterlagen an das Model In dieser Form beruht auf:

validate :format_numbers 

    def format_numbers 
     if self.number_field.include?(',') || self.number_field.include?('.') 
     errors.add(base: "Do not add commas or periods please") 
     end 
    end 

, dass ein Weg zur Validierung ist jedoch ziehe ich den viel benutzerfreundlicher Art und Weise, die ein Benutzer bestimmte Dinge entfernt hinzufügen kann, dass ich weiß, dass ich don Ich möchte das Formular nicht verarbeiten, sondern mit dem Fehler fortfahren. Dies würde durch das Entfernen von Kommas geschehen, und da Sie keine Perioden haben wollen, würde ich mir auch vorstellen, dass wir etwas rechts von einer Periode entfernen können. Um es zu tun auf diese Weise Sie folgende in Ihrem Modell anstelle der oben tun würde:

validate :format_numbers 


    def format_numbers 
     self.number_field = self.number_field.gsub(/\.\d+/, '') #This will remove any period and all numbers to the right of that period. 
     self.number_field = self.number_field.gsub(',','') #This will remove all commas throughout. 
    end 

Dies sorgt für eine glattere Erfahrung Benutzer, da sie jetzt 2.000,00 in das Formularfeld eingeben können, und es wird als 2000

gespeichert werden
2

Sie vermissen Anker auf Ihrem regulären Ausdruck, was dazu führt, dass die "2" in "2.0" übereinstimmt (in einigen Browsern). Die Regex zu verwenden ist:

<%= ... pattern: "^\d+$" %> 

Sie sollten wahrscheinlich die Validierung auf dem Modell tun auch, wie das HTML5-Muster-Attribut kann nicht von allen Browsern befolgt werden. Einfach hinzufügen:

class YourModel < ActiveRecord::Base 
    validates :contribution_to_sales, numericality: { only_integer: true } 
    ... 
end 
+0

es nicht erlaubt 6,05 aber es allos 6.0 noch –

Verwandte Themen