Diese Zeit ist eine Fortsetzung des vorherigen Artikels.
Bitte lesen Sie den vorherigen Artikel, wenn Sie möchten.
Erklärung von Ruby on Rails für Anfänger ①
Erklärung von Ruby on Rails für Anfänger ② ~ Erstellen von Links ~
Erklärung von Ruby on Rails für Anfänger ③ ~ Erstellen einer Datenbank ~
Erklärung von Ruby on Rails für Anfänger ④ ~ Verwendung von Namensregeln und form_Tag ~
Lassen Sie uns die Daten der Benutzertabelle abrufen und mit dem folgenden Code anzeigen.
index.html.erb
<% @users.each do |user| %>
<p>name</p>
<div class="ruby-name"><%= user.name %></div>
<% end %>
In der Steuerung übergeben, um die Instanzvariable @users zu verwenden.
users_controller.rb
def index
@users = User.all
end
Der folgende Bildschirm wird angezeigt.
Darüber hinaus wird CSS wie folgt angegeben.
users.scss
.ruby-name {
color: purple;
display: inline-block;
font-weight: bold;
}
Lassen Sie uns nun das Löschen der Datenbank implementieren.
Schreiben Sie den Code wie folgt um.
index.html.erb
<% @users.each do |user| %>
<p>name</p>
<div class="ruby-name">
<%= user.name %>
<%= link_to("Löschen", "/users/#{user.id}/destroy", {method: "post"})%>
</div>
<% end %>
Ich konnte das Element durch Klicken auf die Schaltfläche Löschen löschen.
Schauen wir uns die spezifische Verarbeitung an. Der folgende Code wurde zu index.html.erb hinzugefügt.
<%= link_to("Löschen", "/users/#{user.id}/destroy", {method: "post"})%>
Dadurch wird das zweite Argument verarbeitet, wenn Sie auf Löschen klicken.
Das zweite Argument, "/users/#{user.id}/destroy", enthält die Datenbank-ID im Routing zur Zerstörungsaktion des Benutzercontrollers. Durch Angabe der URL auf diese Weise kann der Controller die ID der Datenbank erhalten, die Sie löschen möchten.
Das dritte Argument gibt an, dass dies eine Post-Anfrage ist, keine Get-Anfrage.
Route wie folgt.
routes.rb
post "users/:id/destroy" => "users#destroy"
Der: id-Teil kann eine beliebige Nummer empfangen. Die empfangene Nummer wird in params [: id]
im Benutzer-Controller gespeichert.
Codieren Sie den Controller wie folgt:
users_controller.rb
def destroy
user = User.find_by(id: params[:id])
user.destroy
redirect_to("/users/index")
end
Extrahieren Sie im Teil user = User.find_by (id: params [: id])
die Daten mithilfe des Modells aus der Datenbank. Extrahieren Sie die Daten mit derselben ID wie die von index.html.erb gesendete ID aus der Datenbank und speichern Sie sie im Benutzer.
Die Daten werden im Teil von "user.destroy" gelöscht.
Im Teil "redirect_to (" / users / index ")" leiten wir zu index.html.erb um. Dieses Mal wird es neu geladen, da dies der Vorgang ist, wenn auf den Link zum Löschen in index.html.erb geklickt wird.
Zu diesem Zeitpunkt haben Sie die Daten erfolgreich aus der Datenbank gelöscht.
Als nächstes bearbeiten wir die Datenbank.
Bearbeiten Sie index.html.erb
wie folgt:
index.html.erb
<% @users.each do |user| %>
<p>name</p>
<div class="ruby-name">
<%= user.name %>
<%= link_to("Löschen", "/users/#{user.id}/destroy", {method: "post"})%>
<%= link_to("Bearbeiten", "/users/#{user.id}/edit") %>
</div>
<% end %>
Neu hinzugefügt wurde diesmal der Teil "<% = link_to (" edit "," / users / # {user.id} / edit ")%>".
Dadurch gelangen Sie zu einer neuen Ansichtsdatei mit dem Namen "users / edit".
Zu diesem Zeitpunkt übergeben Sie die ID der Datenbank, die Sie bearbeiten möchten, an die Ansichtsdatei.
Route wie folgt:
routes.rb
get "users/:id/edit" => "users#edit"
Bereiten Sie die folgende Ansichtsdatei im folgenden Pfad vor.
edit.html.erb
<%= form_tag("/users/#{@user.id}/update") do %>
<input type="text" value="<%[email protected]%>" name="new_name">
<input type="submit" value="Senden">
<% end %>
Klicken Sie als Test unten auf den Teil mit der Aufschrift "Datei index.html.erb bearbeiten".
Es wird wie folgt sein.
Hier ist eine Beschreibung der Datei edit.html.erb.
Der Teil form_tag (" / users / # {@ user.id} / update ")
gibt an, welche Aktion von welchem Controller verwendet werden soll.
Dieses Mal verwenden wir die Aktualisierungsaktion des Benutzercontrollers. Um die Datenbank zu bearbeiten, senden Sie außerdem die ID der Datenbank, die Sie bearbeiten möchten. form_tag war eine Post-Anfrage.
Im Teil von <input type =" text "value =" <% [email protected]%> "name =" new_name ">
werden der Anfangswert und der Name des Eingabe-Tags festgelegt. "@ user" wird von der Bearbeitungsaktion des Benutzer-Controllers gesendet.
users_controller.rb
def edit
@user = User.find_by(id: params[:id])
end
@ User
enthält den in der Datenbank gefundenen Wert gemäß id.
Jetzt ändern wir den Wert wie unten gezeigt und senden ihn.
Das folgende Routing führt dann die Aktualisierungsaktion des Benutzercontrollers aus.
routes.rb
post "users/:id/update" => "users#update"
users_controller.rb
def update
user = User.find_by(id: params[:id])
user.name = params[:new_name]
user.save
redirect_to("/users/index")
end
Durchsuchen Sie in der Aktualisierungsaktion die Datenbank nach der gesendeten ID, speichern Sie sie in der lokalen Variablen user, schreiben Sie die Daten in der Namensspalte in den neu gesendeten Namen um und speichern Sie sie mit "user.save". Danach leite ich zu / users / index
um.
Daher ändert es sich wie folgt.
Dies ist das Ende dieses Artikels.
Vielen Dank für Ihre Beziehung.
Bitte lesen Sie die folgenden Artikel, wenn Sie möchten.
Erklärung von Ruby on Rails für Anfänger ⑥ ~ Erstellung der Validierung ~
Erklärung von Ruby on Rails für Anfänger ⑦ ~ Implementierung von Flash ~
Recommended Posts