Notieren Sie sich die Verwirrung während des Studiums bei TECH :: CAMP. Ich habe die offizielle Referenz nicht gelesen, daher kann es zu Fehlern kommen.
tl; d
def index
end
def show
end
def new
end
def edit
end
Von den sieben Methoden war ich überrascht, dass diese vier funktionieren würden, wenn ich mindestens so viel schreiben würde. Um Daten an die Ansichtsseite zu senden, habe ich die aktive Aufzeichnungsmethode verwendet, um Instanzvariablen zu deklarieren ... und sie so vorbereitet, wie ich es im Grundkurs gelernt habe. Wenn diese Aktionen durch URL oder Präfix angegeben werden, ist es fast sicher, dass die Instanzvariablen des entsprechenden Modells (im Fall von show and edit, id) vorbereitet werden. Selbst wenn Sie es nicht schreiben, werden Instanzvariablen automatisch vorbereitet.
Wenn Sie jedoch die Anzeigereihenfolge ändern möchten, laden Sie das zugehörige Modell mit include, um das N + 1-Problem zu vermeiden, verknüpfen Sie es mit JavaScript usw. Sie müssen eine entsprechende Beschreibung erstellen.
html.erb
<%= form_with(model: @tweet, local: true) do |form| %>
<%= form.text_field :name, placeholder: "name" %>
<%= form.text_area :text, placeholder: "text" , rows: "10" %>
<%= form.submit "SEND" %>
<% end %>
Es wird automatisch festgestellt, ob sich die übergebene Instanz im Datensatz befindet, sodass Sie nicht den Pfad schreiben müssen, für den die Aktion die Daten senden soll. Auf diese Weise kann der Formularcode so verwendet werden, wie er in der neuen Ansicht und in der Bearbeitungsansicht ist. Es scheint jedoch, dass Sie mit einer neuen Aktion neu sein müssen, um form_with mitzuteilen, dass dies eine Instanz von new ist.
Wenn Sie in dem Teil, der einzelne Eingabeformulare wie "form.text_field: name" generiert, den Spaltennamen angeben, wird automatisch entschieden, welche Spalte gespeichert werden soll. Wenn das Symbol dieses Spaltennamens in HTML konvertiert wird, wird es außerdem als "id =" name "" konvertiert. Selbst wenn Sie die ID nicht für die Verwendung in JavaScript festlegen, lautet sie "document.getElementById ("). Praktisch mit dem Namen ")` anzugeben.
html.erb
<% rooms.each do |room|%>
<%= link_to room.name, room_messages_path(room), method: :get%>
<% end %>
Da Prefix eine Instanz angeben kann, muss sie nicht in einen numerischen Wert konvertiert oder der Ausdruck wie "room / destroy / # {room.id}" erweitert werden. Ist es wie ein konstantes URI-Muster? Ich habe mich gefragt, aber wer ist das Präfix, das so etwas wie ein Argument angeben kann? Methode?
Recommended Posts