Ich verwende Rails 3 und schicke kein Formular, weil eines der Felder validates_presence_of
nicht übergibt. Mein Modell heißt dinner
, und das Feld, das in Verbindung mit einem Datumsauswahl verwendet wird, heißt date
.
views/dinners/new.html.erb:
models/dinner.rb:
dinners_controller.rb:
Immer wenn ich alle Felder ausfülle, einschließlich date
, bekomme ich den Fehler "Datum kann nicht leer sein", obwohl es nicht leer ist. Was ist hier los?
Ich habe die Antwort gefunden.
Meine date
-Spalte hatte den Typ date
und vor der Validierung hat Rails .to_date
darauf ausgeführt. Leider erstellt der Datapicker , den ich verwende, Daten im amerikanischen mm/dd/yy
-Format, die Rails nicht verarbeiten kann, also .to_date
hat null zurückgegeben. Aus diesem Grund hat das Datum die Validierung nicht bestanden: weil es wirklich Null war, obwohl die POST-Anfrage in Ordnung war.
Ich habe die einfache Lösung gewählt und das Standarddatum von datepicker wie hier hier geändert.
Hinweis: Für meine Version von datepicker musste ich format
anstelle von dateFormat
verwenden, und auch musste yyyy-mm-dd
anstelle von yy-mm-dd
verwenden, weil Rails String#to_date
denkt dass das Jahr "13" buchstäblich "0013" und nicht "2013" ist.
Tags und Links ruby-on-rails-3 validation