Rails 5.2.2でユーザの新規登録の後、編集をする機能を作成しています
新規登録はでき、編集画面でユーザ名とメアドは表示されるのですが、編集をしてその編集を保存しようとすると、編集画面にリダイレクトされ保存が完了しません。
またbinding.pryを用いてデバッグしてもコンソールで変数の中身が表示されません。
edit.html.erb
1<h1>ユーザ編集画面</h1> 2<%= form_tag("/users/#{@user.id}/update", {multipart: true}) do %> 3 <p>ユーザー名</p> 4 <input name="name" value="<%= @user.name %>"> 5 <p>画像</p> 6 <input name="image" type="file"> 7 <p>メールアドレス</p> 8 <input name="email" value="<%= @user.email %>"> 9 <p>サークル名</p> 10 <input name="club"> 11 <p>入学年度</p> 12 <input name="entry_year"> 13 <p>自己紹介文</p> 14 <textarea name="content" rows="8" cols="80"></textarea> 15 <input type="submit" value="保存"> 16<% end %> 17
users_controller
1 def edit 2 @user = User.find_by(id: params[:id]) 3 end 4 5 def update 6 @user = User.find_by(id: params[:id]) 7 @user.name = params[:name] 8 @user.email = params[:email] 9 @user.password = params[:password] 10 @user.content = params[:content] 11 @user.club = params[:club] 12 @user.entry_year = params[:entry_year] 13 14 if params[:image] 15 @user.image_name = "#{@user.id}.jpg" 16 image = params[:image] 17 File.binwrite("public/user_images/#{@user.image_name}", image.read) 18 end 19 20 @user 21 binding.pry 22 if @user.save 23 flash[:notice] = "ユーザー情報を編集しました" 24 redirect_to("/users/#{@user.id}") 25 else 26 render("users/edit") 27 flash[:notice] = "編集できていません" 28 end
From: C:/Users/Kotaro/Desktop/kitoff/app/controllers/users_controller.rb @ line 48 UsersController#update: 31: def update 32: @user = User.find_by(id: params[:id]) 33: @user.name = params[:name] 34: @user.email = params[:email] 35: @user.password = params[:password] 36: @user.content = params[:content] 37: @user.club = params[:club] 38: @user.entry_year = params[:entry_year] 39: 40: 41: if params[:image] 42: @user.image_name = "#{@user.id}.jpg" 43: image = params[:image] 44: File.binwrite("public/user_images/#{@user.image_name}", image.read) 45: end 46: 47: @user => 48: binding.pry 49: if @user.save 50: flash[:notice] = "ユーザー情報を編集しました" 51: redirect_to("/users/#{@user.id}") 52: else 53: render("users/edit") 54: flash[:notice] = "編集できていません" 55: end 56: 57: end [1] pry(#<UsersController>)> @user
問題の箇所は分かっているのでしょうか?(@user.save が失敗している?)
それが分かっているのであれば、問題の箇所とデバッグの結果を質問欄に追記してください。