[RUBY] Berücksichtigung des Routings von form_with helper method

Zweck dieses Beitrags ・ Ich werde es als Protokoll schreiben, um den Betrieb von Rails zu notieren. ・ Fortsetzung von [Rails Review 1](https://qiita.com/naoto911/items/f46b35f84cc80f59cac3), [Rails Review 2](https://qiita.com/naoto911/items/f907348510a5dffb0a2f) .. ・ Da ich dieses Mal im hypothetischen Stadium geschrieben habe, besteht auch die Möglichkeit, dass ein Erkennungsfehler vorliegt.

Unterrichtsmaterialien zum Lernen Udemys ["Einführung in Ruby on Rails zum ersten Mal - lernen Sie Ruby und Rails aus den Grundlagen und veröffentlichen Sie Webanwendungen im Internet"](https://www.udemy.com/course/the-ultimate-ruby-on-rails- Ich habe Bootcamp /) als Unterrichtsmaterial verwendet.

○ Verwendung von form_with

qiita.rb


link_to 'Linkname', 'Präfixname+ _path'

・ Erstellt automatisch HTML (erstellt href) ・ Verwenden Sie hauptsächlich die folgenden drei

○text_field ⇨ Vom Benutzer geschriebener Speicherplatz ⇨ Beschreiben Sie den Inhalt, der in eine Zeile passt

○text_area ⇨ Vom Benutzer geschriebener Speicherplatz ⇨ Im Vergleich zu form_with ausführlich beschrieben ○submit ⇨ Verarbeitung, wenn der Benutzer drückt, um auf eine andere URL zuzugreifen, z. B. eine Senden-Schaltfläche oder eine Eingabetaste

ruby:qiita.html.erb


<%= form_with model:@question, local:true do |f| %>

<%= f.text_field :name, class: "form-control" %>

<%= f.text_area :content, class: "form-control" %>

<%= f.submit "Senden", class: "btn btn-primary" %>

<% end %>

[Erläuterung] ○form_with model:@question ⇨ Die Erklärung hier ist kompliziert, daher werde ich sie im Folgenden ausführlich erläutern.

○local:true ⇨ Deaktivieren Sie das asynchrone Kommunikationsformular ⇨ Details sind unbekannt und müssen separat untersucht werden ...

○do |f| ⇨ Speichern Sie die Hashes in @question separat

○f.text_field :name ⇨ Extrahieren Sie den Wert, der auf Folgendes trifft, und zeigen Sie ihn an: Name aus den getrennten Elementen.

○f.text_area :content ⇨ Extrahieren Sie den Wert, der auf Folgendes trifft, und zeigen Sie ihn an: Inhalt aus den Stücken

○ f.submit "submit" ⇨ Zeigen Sie "Senden" auf der Schaltfläche an

[Wo geben Sie den Pfad nach Ausführung der Submit-Methode an?]

Die folgenden zwei Dinge sind hier wichtig ① Das Senden wird mit der POST-Methode </ font> gesendet (2) Wie viele Modellnamen enthält das Formular (form_with method use page)? -Wenn es nur ein Modell gibt, geben Sie die URL im Präfix an, die nur Modellname + s </ font> als Zeichenfolge enthält -Wenn es zwei oder mehr Modelle gibt, geben Sie die URL im Präfix an, die nur Modellname 1_Modellname 2 + s </ font> als Zeichenfolge enthält. ・ * (Definiert als Modellname 1, Modellname 2, ..., Modellname n von der Seite näher an der Pfadwurzel)

○ Bestätigen Sie während des Routings mit 2 Beispielmustern, wie unten gezeigt

                  Prefix  Verb   URI Pattern                                                                              Controller#Action
             answers_edit GET    /answers/edit(.:format)                                                                  answers#edit
                     root GET    /                                                                                        questions#index
         question_answers GET    /questions/:question_id/answers(.:format)                                                answers#index
                          POST   /questions/:question_id/answers(.:format)                                                answers#create
      new_question_answer GET    /questions/:question_id/answers/new(.:format)                                            answers#new
     edit_question_answer GET    /questions/:question_id/answers/:id/edit(.:format)                                       answers#edit
          question_answer GET    /questions/:question_id/answers/:id(.:format)                                            answers#show
                          PATCH  /questions/:question_id/answers/:id(.:format)                                            answers#update
                          PUT    /questions/:question_id/answers/:id(.:format)                                            answers#update
                          DELETE /questions/:question_id/answers/:id(.:format)                                            answers#destroy
                questions GET    /questions(.:format)                                                                     questions#index
                          POST   /questions(.:format)                                                                     questions#create
             new_question GET    /questions/new(.:format)                                                                 questions#new
            edit_question GET    /questions/:id/edit(.:format)                                                            questions#edit
                 question GET    /questions/:id(.:format)                                                                 questions#show
                          PATCH  /questions/:id(.:format)                                                                 questions#update
                          PUT    /questions/:id(.:format)                                                                 questions#update
                          DELETE /questions/:id(.:format)                                                                 questions#destroy


             answers_edit GET    /answers/edit(.:format)                                                                  answers#edit
                     root GET    /                                                                                        questions#index
         question_answers GET    /questions/:question_id/answers(.:format)                                                answers#index
                          POST   /questions/:question_id/answers(.:format)                                                answers#create
      new_question_answer GET    /questions/:question_id/answers/new(.:format)                                            answers#new
     edit_question_answer GET    /questions/:question_id/answers/:id/edit(.:format)                                       answers#edit
          question_answer GET    /questions/:question_id/answers/:id(.:format)                                            answers#show

○ Angenommen, form_with wird in der URL von / questinos / new (Muster 1) angezeigt

[Über ①] ・ Senden wird per POST-Methode gesendet -Destination Path Kandidaten werden unter Prefixn auf POST eingegrenzt

                  Prefix  Verb   URI Pattern                                                                              Controller#Action
         question_answers POST   /questions/:question_id/answers(.:format)                                                answers#create
                questions POST   /questions(.:format)                                                                     questions#create

[Über ②] ・ Konzentrieren Sie sich auf die URL der Seite, auf der das Formular angezeigt wird -Form_with wird in der URL von / questinos / new angezeigt ・ Enthält eine Frage -Prefix gibt eine URL für das Präfix an, die nur den Modellnamen + s als Zeichenfolge enthält ・ Geben Sie daher Fragen an


○ Angenommen, form_with wird in der URL von / Fragen /: Fragen / ID / Antworten / Neu (Muster 2) angezeigt

[Über ①] ・ Ähnlich wie bei Muster 1 mit der POST-Methode eingrenzen

[Über ②] ・ Konzentrieren Sie sich auf die URL der Seite, auf der das Formular angezeigt wird -Form_with wird in der URL von / Fragen /: Fragen_ID / Antworten / Neu angezeigt ・ Es sind zwei Modelle enthalten: Frage und Antwort.

  • Geben Sie als Präfix die URL für das Präfix an, die nur den Modellnamen 1_Modellname 2 + s als Zeichenfolge enthält. ・ Geben Sie daher question_answers an

○ Andere Annahmen ・ Die beiden obigen Beispiele werden alle anhand der Aktion #new erläutert, wobei der Schwerpunkt auf form_with liegt. - Tatsächlich wird form_with auch von der Aktion #edit verwendet. ・ Wenn Sie jedoch nach der obigen Logik urteilen, stimmt Tsuji überein.

○ Zusammenfassung ・ Zusammengefasst, wie die Ziel-URL von form_with ermittelt wird -Die obige Erklärung geht von einem sogenannten verschachtelten Typ aus, in dem Modelle verschachtelt sind. ・ Die Verschachtelung wird zu einem späteren Zeitpunkt separat zusammengefasst.