Zu Beginn des Rails-Lernens konnte ich den Fluss von form_with nicht verstehen, daher werde ich ihn zusammenfassen. Schienen 5.2.4.
Ich bin mir sicher, dass es Leute gibt, die sagen: "Komm schnell zusammen!". Also werde ich zuerst den Ablauf zusammenfassen.
Es gibt ein Benutzermodell und ein Post-Modell.
** ① Zeigen Sie die Ansichtsseite (new.html.erb) mit der neuen Aktion an ** Wenn eine Aufforderung zum Aufrufen der neuen Aktion erfolgt, wird zuerst die neue Beitragsseite des Beitrags angezeigt. ※Bild
** ② Übergeben Sie die durch die neue Aktion erstellte Instanz "@ post" an die Ansicht **
post_controller.rb
class PostsController < ApplicationController
~~
def new
@post = Post.new #Hier generiert@Beitrag ist neu.html.An erb übergeben
end
~~
** ③ Geben Sie einen Wert in die Instanzeigenschaften ein und senden Sie **
** ④ Rufe die Erstellungsaktion auf ** Wie Sie im obigen Bild sehen können, ruft form_with die Erstellungsaktion auf, wenn Sie auf die Schaltfläche "Senden" (Formular_mit senden) klicken.
- Die Hilfsmethode form_with ist ein praktisches untergeordnetes Element, das die Eigenschaften der übergebenen Instanz (in diesem Fall "@ post") überprüft und entscheidet, ob zum Erstellen oder Aktualisieren übersprungen werden soll.
form_mit denkt
- @Beitrag ist leer → Ich mache es zum ersten Mal! Dann erstellen!
- @Beitrag ist nicht leer → Ich möchte ihn ändern! Dann aktualisieren!
** ⑤ Rufen Sie die post_params-Methode auf **
post_controller.rb
class PostsController < ApplicationController
~~
def create
#Die Erstellungsaktion wird aufgerufen und veröffentlicht.create(post_params)Wird ausgeführt → post_params heißt
Post.create(post_params)
redirect_to root_path
end
private
def post_params
params.require(:post).permit(:title, :content).merge(user_id: current_user.id)
end
~~
** ⑥ Geben Sie von den von params empfangenen Werten den von allow (allow) empfangenen Wert an **
Status des von params empfangenen Werts
[1] pry(#<PostsController>)> params
=> <ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"oLGgLMTcqSPi7cbK9j1wFhH5rqiwXYO7GyRoZcZFZe6Y5VdbHrWCOyeo37kgW/bsl+eANQrz7p/lAzZMnAS8Gg==",
"post"=>{"title"=>"Was ich heute gelernt habe", "content"=>"form_mit ist ein weises Kind!"},
"commit"=>"Post", "exept"=>:index, "controller"=>"posts", "action"=>"create"} permitted: false>
Da es schwer zu erkennen ist, bricht die Zeile an einer Position, die ursprünglich nicht beabsichtigt war, aber normalerweise wird sie in einer Zeile zurückgegeben.
`` post "=> {" title "=>" Was ich heute gelernt habe "," content "=>" form_with ist ein weises Kind! "}, Wird der Wert von
post_params` behandelt?
Wenn Sie die von allow
empfangenen Werte nicht zulassen, werden möglicherweise unbeabsichtigte Werte in der Tabelle gespeichert, sodass eine Angabe fast obligatorisch ist.
** ⑦ Beitrag mit dem Wert von post_params erstellen (erfolgreich in der Tabelle gespeichert) ** Der von der post_params-Methode zurückgegebene Wert wird also für Post.create verwendet Es befindet sich im selben Zustand wie unten.
def create
Post.create(title: "Was ich heute gelernt habe", content: "form_mit ist ein weises Kind!", user_id: 1)
redirect_to root_path
end
Wenn Sie nach Bestätigung dieses Ablaufs das Bild am Anfang noch einmal betrachten, werden Sie Ihr Verständnis vertiefen!
Die Unterschiede zwischen form_tag und form_for sind in diesem Artikel zusammengefasst. Wie schreibe ich form_with / form_for / form_tag in [Rails] haml
Ich würde mich freuen, wenn Sie auf Fehler hinweisen könnten.
Recommended Posts