In einem Standard, rüstet Rails 5.1 (oder 5.0) -Controller, erhalten Sie diese auf der erstellen Aktion:Rails Javascript Anfrage reagiert, obwohl format.js ist nicht auf Controller
def create
@test = Test.new(test_params)
respond_to do |format|
if @test.save
format.html { redirect_to @test, notice: 'Test was successfully created.' }
format.json { render :show, status: :created, location: @test }
else
format.html { render :new }
format.json { render json: @test.errors, status: :unprocessable_entity }
end
end
end
Wie Sie sehen, gibt ist kein format.js
da.
Aber wenn Sie remote: true
zum Formular hinzufügen (oder, in Rails 5.1, können Sie die local: true
entfernen, die den neuen Standard verwenden, die über Ajax schreiben ist), das Formular funktioniert: der Browser einen Beitrag über xhr senden und Umleitung auf den neu erstellten Datensatz.
an Entwickler-Tools der Suche, ich sehe, dass die Antwort für die Formulareinreichung eine 200 OK mit folgendem Inhalt war:
Turbolinks.clearCache()
Turbolinks.visit("http://localhost:3000/tests/10", {"action":"replace"})
Console auch zeigt es verarbeitet wurde von Javascript: Started POST "/tests" for 127.0.0.1 at 2017-06-18 09:38:25 -0300 Processing by TestsController#create as JS
Die Die Frage ist dann: Wie behandelt Rails diese Antwort/Weiterleitung für die JS-Anfrage, wenn es keine format.js
in der Steuerung gibt?
Ich bin alles in Rails Magie, aber ich möchte wissen, wie das funktioniert, und ich habe nicht gesehen 'Fallback die JS-Anfrage an den format.html Block' dokumentiert überall.