J'ai eu du mal parce que je ne pouvais pas créer une fonction d'édition des informations utilisateur dans Rails. Je vais le partager car la cause a été clarifiée.
Rails 6.0.3.3 devise 4.7.3
--La valeur par défaut devise / registrationraions / edit.html.erb
a été modifiée par erreur.
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
Correctement, il est décrit en utilisant form_for
comme décrit ci-dessus, mais lors de la définition de l'affichage de la vue sur une forme arbitraire, il a été changé par erreur au formulaire en utilisant form_with
.
Par conséquent, la mise à jour n'a pas été effectuée sous la forme enregistrée dans l'appareil par défaut et la mise à jour n'a pas pu être effectuée.
<%= f.label "nickname"%>
<%= f.text_field :nickname, autofocus: true%>
De plus, le formulaire a été décrit dans le formulaire ci-dessus pour l'ajout de la colonne surnom. Vous pouvez le saisir, mais il ne sera pas mis à jour.
devise_for :users, controllers: {
registrations: 'users/registrations'
Ajout de la description ci-dessus
Procédez comme suit dans le terminal
% rails g devise:controllers users
Running via Spring preloader in process 39712
create app/controllers/users/confirmations_controller.rb
create app/controllers/users/passwords_controller.rb
create app/controllers/users/registrations_controller.rb
create app/controllers/users/sessions_controller.rb
create app/controllers/users/unlocks_controller.rb
create app/controllers/users/omniauth_callbacks_controller.rb
Après cela, ajoutez ce qui suit dans controllers / users / registrations_controller.rb
(Comme il a déjà été décrit, vous pouvez simplement le décommenter)
before_action :configure_account_update_params, only: [:update]
protected
def configure_account_update_params
devise_parameter_sanitizer.permit(:account_update, keys: [:nickname])
end
Définissez n'importe quelle colonne dans keys: [: nickname]
.
https://qiita.com/akasakas/items/138c29fa2cecd271cfe4 https://remonote.jp/rails-devise-profile-edit