[RUBY] Mettre en œuvre la page de modification de devise

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.

Environnement de développement

Rails 6.0.3.3 devise 4.7.3

problème

Cause

--La valeur par défaut devise / registrationraions / edit.html.erb a été modifiée par erreur.

Vue

<%= 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.

routage

devise_for :users, controllers: {
 registrations: 'users/registrations'

Ajout de la description ci-dessus

manette

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].

référence

https://qiita.com/akasakas/items/138c29fa2cecd271cfe4 https://remonote.jp/rails-devise-profile-edit

Recommended Posts

Mettre en œuvre la page de modification de devise
[Rails] [Devise] Modifier le profil sans saisir de mot de passe
Créer ma page avec Rails
[rails] Les modifications de la page d'affichage créées par l'appareil ne sont pas reflétées