1. Schlussfolgerung </ b>
2. So codieren Sie </ b>
3. Entwicklungsumgebung </ b>
Ergänzung </ b>
config/roites.rb
Rails.application.routes.draw do
devise_for :users
root to:'XXXX#index'
resources :users, only: [:edit, :update] #---❶
end
❶: Ich möchte den Controller des Benutzers nur zum Bearbeiten und Aktualisieren von Aktionen anweisen, daher codiere ich nur für Ressourcen.
app/controllers/users_controller.rb
class UsersController < ApplicationController
def edit #---❶
end
def update #---❶
if current_user.update(user_params) #---❷
redirect_to root_path #---❸
else
render :edit #---❸
end
end
private
def user_params #---❹
params.require(:user).permit(:name, :email)
end
end
❶: Ich möchte das Konto (in diesem Fall Name und E-Mail-Adresse) wie im Routing festgelegt bearbeiten, daher möchte ich nach dem Bearbeiten und Bearbeiten den Befehl zum Aktualisieren der Funktion erhalten und das Modell anweisen, anzeigen und die Aktion mit def definieren tun.
❷: Ich bin nicht sicher, welches Konto ich aktualisieren möchte, daher mache ich es für den aktuell angemeldeten Benutzer. current_user kann durch Installieren des Devise Gems verwendet werden.
❸: Die obere Seite wird zurückgegeben, wenn das Update erfolgreich war, und der Bearbeitungsbildschirm wird zurückgegeben, wenn das Update nicht erfolgreich war. Um es kurz zu erklären, wird es umgeleitet, weil ich die Benutzerinformationen nach der Aktualisierung aktualisieren möchte (= Ich möchte den Wert der ursprünglichen Instanzvariablen überschreiben). Wenn dies fehlschlägt, verwende ich Rendern, da ich nur zum Bearbeitungsbildschirm zurückkehren muss, ohne die falschen Informationen des Benutzers zu aktualisieren.
❹: Legen Sie starke Parameter fest, um Daten zu empfangen und unbeabsichtigte Benutzeränderungen und -aktualisierungen zu verhindern. Ich verwende die Methode require, um Informationen aus dem Benutzermodell abzurufen. Wenn Sie die Parameter genauer angeben möchten, verwenden Sie den Spaltennamen als Schlüsselnamen.
params.require(:Modellname).permit(:Spaltenname(Werden Sie ein Schlüsselname),・ ・ ・ ・)
Wenn Sie die Hilfsmethode form_with verwenden, um die Informationen der aktuell angemeldeten Person zu senden, ist die einfache Kontobearbeitungsfunktion abgeschlossen.
ruby:app/views/users/edit.html.erb
<%= form_with model: current_user, local: true do |f|%>
<%= f.text_field :name %>
<%= f.email_field :email %>
<%= f.submit "aktualisieren"%>
<% end %>
Ruby 2.6.5
Rails 6.0.3.3
MySQL 5.6.47
SequelPro 1.1.2
VScode
params.require(:user).permit(:name, :email).merge(user_id: current_user.id)
Recommended Posts