[RUBY] Ich war überrascht, dass Rails es automatisch tat.

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

Rails erledigt das für Sie

Sie müssen nichts in den Index schreiben, Aktionen anzeigen, neu bearbeiten

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.

form_with kann durch Modellname und Spaltenname angegeben werden.

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.

Übergeben Sie für link_to die Instanz mit dem Präfix.

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

Ich war überrascht, dass Rails es automatisch tat.
Ich bin von Rails gekommen und wusste nicht, was [attr_accessor] ist
Ich habe eine Rails-Umgebung mit Docker und MySQL erstellt, aber ich war krank
Rails Tutorial Kapitel 14 wurde abgeschlossen und dauerte insgesamt 155,5 Stunden.
Ich wurde viel von AWS während der Entwicklung auf Schienen berechnet, aber ...
Heroku kann bereitgestellt werden, aber ich erhalte eine Fehlermeldung und kann sie nicht öffnen
Ich habe einen Komponisten eingestellt, aber er reagiert nicht.
Ich habe ein Rails-Post-Formular erstellt, kann aber nicht posten (Formular-Tag) / Es tritt kein Fehler auf