初心者です。
■解決したいこと
ユーザー情報を編集し保存できない件を解決したいです。
■現状
- deviseを用いた実装をしてる。
- ユーザー情報の編集機能においては、usersコントローラーを生成しそちらで処理を実行しようと考えている。
■検証したこと
- binding.pryを使い「update」を実行した際、paramsに情報が格納されているかを確認。
下記の情報が格納されているためビューの問題ではないと判断。
<ActionController::Parameters {"_method"=>"patch", "authenticity_token"=>"K8QyDjr473gSjFjZDaHhDWuAc6eB4BAtK5WW5YLbwDGBNN/Cj61A5xAm/NGVNE+ASsOn8Vm0/Zs1yNUtJ1gEyw==", "user"=>{"nickname"=>"なおこ", "email"=>"ppp@ppp"}, "commit"=>"Update", "controller"=>"users", "action"=>"update", "id"=>"4"} permitted: false>
ここまで考えましたが、この先の解決策がわからないためアドバイスをいただきたいです。
よろしくお願い致します。
■現在のソースコード
ruby
1Rails.application.routes.draw do 2 devise_for :users 3 root to: "targets#index" 4 resources :users, only: [:edit, :update, :show] 5 resources :targets, only: [:new, :create, :show, :destroy] do 6 collection do 7 get 'memo' 8 end 9 resources :comments, only: :create 10 end 11end
ruby
1class User < ApplicationRecord 2 # Include default devise modules. Others available are: 3 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 4 devise :database_authenticatable, :registerable, 5 :recoverable, :rememberable, :validatable 6 7 validates :nickname, presence: true 8 PASSWORD_REGEX = /\A(?=.*?[a-z])(?=.*?\d)[a-z\d]+\z/i.freeze 9 validates_format_of :password, with: PASSWORD_REGEX, message: 'は半角英数字混合での入力が必要です' 10 11 has_many :targets 12 has_many :comments 13end 14
ruby
1class UsersController < ApplicationController 2 def edit 3 @user = User.find(params[:id]) 4 end 5 6 def update 7 binding.pry 8 @user = User.find(params[:id]) 9 if @user.update(user_params) 10 redirect_to @user 11 else 12 render 'edit' 13 end 14 end 15 16 def show 17 @user = User.find(params[:id]) 18 @targets = @user.targets 19 end 20 21 private 22 23 def user_params 24 params.require(:user).permit(:nickname, :email) 25 end 26end 27
ruby
1<div class='account-page' id='account-page'> 2 <div class="container"> 3 <div class=' account-page_header'> 4 <h3>アカウントの編集</h3> 5 </div> 6 7 <div class='user-form'> 8 <%= form_with model: @user, local: true do |f|%> 9 10 <div class='field'> 11 <div class='field-label'> 12 <%= f.label :nickname%> 13 </div> 14 <div class='field-input'> 15 <%= f.text_field :nickname, autofocus: true%> 16 </div> 17 </div> 18 19 <div class='field'> 20 <div class='field-label'> 21 <%= f.label :email%> 22 </div> 23 <div class='field-input'> 24 <%= f.email_field :email%> 25 </div> 26 </div> 27 28 <div class='actions'> 29 <%= f.submit "Update", class: 'btn'%> 30 </div> 31 32 <% end %> 33 </div> 34 </div> 35</div> 36
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/28 09:11 編集