1

Ich habe versucht, dieses Problem auf tausend verschiedene Arten zu lösen, indem ich Dutzende von StackOverflow-Posts sowie externe Tutorials über DateTime, bootstrap datetimepicker, Formatierung, strptime, strftime und weiter und weiter ohne Auflösung ansehe. Ich habe gerade eine grundlegende Frage, die mir helfen kann, voranzukommen.Warum funktioniert das in der Konsole kaufen nicht in meiner App?

Warum funktioniert das in meiner Konsole:

DateTime.strptime("09-29-2016 03:29 PM", "%m-%d-%Y %I:%M %p") 
    => Thu, 29 Sep 2016 15:29:00 +0000 

Aber nicht in meiner App:

@image.start_at = DateTime.strptime(params[:start_at].to_s, "%m-%d-%Y %I:%M %p") 
=>ArgumentError in ImagesController#create 
invalid date 

Meine start_at Parameter kommen durch wie:

..."start_at"=>"09-29-2016 03:29 PM"},... 

Auch diese funktioniert nicht in meiner App:

@image.start_at = DateTime.strptime(@image.start_at.to_s, "%m-%d-%Y %I:%M %p") 
+0

Hmm das ist seltsam. Es läuft auch gut in meiner Konsole. Haben Sie versucht, 'require 'time'' ' require' date' am Anfang der Datei hinzuzufügen? –

+0

erfordern 'date' war in meinem Bildmodell die meiste Zeit, die ich versucht habe, dieses Problem zu lösen. Ich habe es kürzlich zum Image-Controller hinzugefügt, um sicher zu gehen, dass ich es überall habe, wo ich es brauchen könnte. – Lenocam

+0

@AndreyDeineko start_at ist Teil meiner image_params. Im Wesentlichen ist es eine Spalte, um ein Datum in meinem Bildmodell zu speichern. Ich versuche, ein amerikanisches Datum und eine Zeit zu verwenden, die passend für Schienen auf dem hinteren Ende – Lenocam

Antwort

1

Dies sollte gut funktionieren:

@image.start_at = Date.strptime(params[:image][:start_at], "%m-%d-%Y %I:%M %p") 

Erläuterung:

  1. Sie müssen es auf Zeichenfolge nicht konvertieren - alles in params ist ein String;
  2. Da der start_at 's-Typ ein Date ist, sollten Sie ein Objekt Date daran übergeben, kein DateTime Objekt.

Wenn Ihr start_atIS ein Datetime-Typ (nicht Datum, wie Sie in den Kommentaren gesagt haben),

arbeiten.

+0

formatieren Ich empfange jetzt diesen Fehler 'TypeError in ImagesController # create keine implizite Umwandlung von Nil in String' Meine Params durchliefen im Fehler noch sehe so aus "start_at" => "29.09.2016 16:28"}, so verstehe ich nicht, warum es es als "null" betrachten würde. – Lenocam

+0

@Lenocam bitte fügen Sie eine 'binding.pry' über dem '@image.start_at = ...' Code hinzu und debuggen. Bedeutet, wenn das Terminalfenster des Rails-Servers die Konsole öffnet, tippe ein: 'params [: start_at]' - stelle sicher, dass es da ist. Dann starte den Code und sieh, ob es funktioniert. –

+0

Also lief ich in meiner Konsole hantieren und params [: start_at] eingeben, es antwortete 'nil', ich verstehe nicht, warum es Null wäre. Was meinst du "den eigentlichen Code ausführen"? – Lenocam

Verwandte Themen