Min-Wert für input in Einfacher Form
Ich möchte erstellen Sie eine einfache Geld-Eingang mit SImpleForm.
Also das Geld-Feld sollte ein minimaler Wert ist 0, so dass Benutzer nicht geben Sie die Wert weniger als 0 ist.
Aber ich weiß nicht, wie zu definieren, der min-Wert mit einfacher form.
Frage ich mich, ob es möglich ist.
InformationsquelleAutor com | 2014-04-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Definitiv! Die (vereinfachten) HTML-Code für das Formular, das Sie wollen, sieht man hier:
Beachten Sie die zwei wirklich wichtige Eigenschaften auf der input-field:
min
auf 0 gesetzt ist, weil Sie nicht zulassen, dass negative zahlen undstep
eingestellt istany
, weil Sie zulassen möchten, dass Dezimalzahlen in. Wenn Sie wollte nur noch dollar-Beträge, die Sie setzen könnenstep="1"
zum Beispiel. Auch, wenn Sie wollte, um ein max-Wert könnte man mit denmax
Attribut.Wichtiger Hinweis: dies nur führt eine Validierung auf der client-Seite. Es ist möglich, dies zu ändern, wenn Sie wissen, was Sie tun, so stellen Sie sicher, dass Sie immer noch überprüfen, dass die Eingabe geschickt mit dieser form ist auf dem server gültig.
Ich bin nicht ein Ruby-guy, aber das Lesen durch die Einfache Form docs, ich denke, das sollte funktionieren:
Vorausgesetzt, Betrag ist eine Zahl geben, die in Ihrem Modell, es wird automatisch ein input[type=Zahl] für Sie.
in: 1.0..200.0, step: 1
. Ein Beispiel ist dargestellt in der Antwort unten.InformationsquelleAutor Ryan Erdmann
simple_form
wird, stellen Sie den input-Parametern auf der Grundlage der Modell - Validierungen, was bedeutet, dass Ihr client-side und server-side Validierungen entsprechen und decken die Benutzer mit ausgefallenen modernen Browsern, die HTML5 unterstützen die neuen input-Typen und Attribute und Benutzer mit älteren Browsern, die dies nicht tun.Beispiel dieses Modell:
Und diese Ansicht:
Der resultierende markup-Code wird wie folgt Aussehen (habe ich entfernt, einige der Attribute für die Klarheit):
Wie bereits in einer anderen Antwort, wenn Sie wollen, überschreiben Sie die Standard-Attribute, die Sie verwenden können, die
input_html
option beim Aufruf#input
:validates :amount, numericality: { greater_than_or_equal_to: 1 }
auf meiner model-Attribut und das hinzufügen nicht denmin
Attribut in der Sicht deramount
Eingang. Könntest du einen link posten zu der Dokumentation, die bestätigt Ihre Antwort?Es ist nicht genau Dokumentation, aber hier ist ein test-Fall aus simple_form, das bestätigt, dass diese Funktionalität von: github.com/plataformatec/simple_form/blob/...
InformationsquelleAutor georgebrock
Für @georgebrock Antwort zu arbeiten, in simple_form.rb (oder was auch immer Namen, den Sie verwenden, könnte simple_form_bootstrap.rb), die Sie ändern müssen:
:
Für den wrapper, der verwendet wird, um zu zeichnen die Eingabe.
"Optional" bedeutet einfache form verwenden wird, die Komponente wird aber nicht lookup automatisch an, sodass Sie angeben :min :max params auf die Eingabe manuell.
Damit dies funktioniert, müssen Sie verwenden
greater_than_or_equal_to
undless_than_or_equal_to
numericality validator-Optionen, nichtgreater_than
oderless_than
.gearbeitet, großes Dankeschön
InformationsquelleAutor Alexander S.
Die Antwort von @alexander-s ist normalerweise Recht.
Jedoch hatte ich ein Problem mit simple_form.rb überfahren von simple_form_bootstrap.rb, dass Sie anweisen, Sie NICHT zu ändern. Es listet
b.optional :minmax
vielen stellen.Statt der globalen Einstellung von
b.use :minmax
erwähnt von @alexander-s, die ich verwendet,Dies ist besser als es verwendet die min-Anzahl set in Ihrem Modell.
InformationsquelleAutor oma