Wenn Sie beim Senden von Formularinhalten in der Validierung stecken bleiben Rendern Sie den neuen Post-Bildschirm mit der Render-Methode Es sollte viele Leute geben, die gelernt haben, indem sie den Fehler oder den eingegebenen Inhalt angezeigt haben
Aber was ist, wenn Sie die Render-Methode nicht verwenden können? Eigentlich verwende ich die Google Map-API für das Portfolio, an dem ich arbeite. Beim Rendern einer Seite mit "Rendern" tritt das Problem auf, dass MAP aus irgendeinem Grund nicht angezeigt wird ...
Es war ein Problem, das durch Ändern der Spezifikationen gelöst werden konnte, aber ich wollte es nicht ändern. Ich werde Ihnen zeigen, wie Sie die obige Bewegung erreichen, ohne "Rendern" zu verwenden.
Als Beispiel in task_controller.rb
Neue Post-Page-Aktion new
und
Angenommen, Sie haben eine Aktion "Erstellen", mit der ein neuer Beitrag gespeichert wird.
tasks_controller.rb
def create
@task = Task.new(task_params)
if @task.save
redirect_to @task, notice: 'Sie haben die Aufgabe gespeichert.'
else
render :new
end
end
@ task.save
schlägt fehl und render: new
unter else
wird ausgeführt,
Die neue Beitragsseite wird gerendert.
Wie Sie bereits wissen, haben Sie danach das Gefühl, "@ task.errors.full_messages" in der Ansicht zu verwenden.
Dies erfolgt in Form eines erneuten Zugriffs mit "redirect_to" Fehleranweisungen und Eingabeinhalte werden in der Aktion in "flash" gespeichert.
tasks_controller.rb
def create
@task = Task.new(task_params)
if @task.save
redirect_to @task, notice: 'Sie haben die Aufgabe gespeichert.'
else
flash[:error_msgs] = @task.errors.full_messages
flash[:tmp_body] = @task.body
redirect_to new_task_url
end
end
Eine Fehleranweisung in flash [: error_msgs]
Der Textinhalt wird in flash [: tmp_body]
gespeichert.
Danach ist es in Ordnung, wenn Sie den Wert flash in der Zugriffszielansicht verwenden. das ist alles!