前提
userモデルにuser_nameのカラムが入っており、これに空欄を防ぐバリデーションをかけたい。
上記の処理はprofile.html.erbで行う。
実現したいこと
ユーザーネームが空欄で入力された時にエラーメッセージが表示されるようにしたい。
- ▲▲機能を動作するようにする
該当のソースコード
profile.html.erb
1<%= render "shared/partial", obj:@user %> 2<div class="profile"> 3 <div class="profile-form"> 4 <div class="text-center"> 5 <h4>プロフィール</h4> 6 </div> 7 <div class="profile-container"> 8 <%= form_with url: update_home_path, method: :post do |f| %> 9 <table> 10 <tr> 11 <th><%= f.label :profile_image, "アイコン画像" , class:"form-label" %></th> 12 <td><%= f.file_field :profile_image, class: "mb-3 form-control", value: @user.profile_image %></td> 13 </tr> 14 <tr> 15 <th><%= f.label :user_name ,"名前", class: "form-label" %></th> 16 <td><%= f.text_field :user_name, class: "mb-3 form-control", value: @user.user_name %></td> 17 </tr> 18 <tr> 19 <th><%= f.label :self_introduce ,"自己紹介", class: "form-label" %></th> 20 <td><%= f.text_area :self_introduce, class: "mb-3 form-control", value: @user.self_introduce %></td> 21 </tr> 22 </table> 23 <ul class="mb-3 form-check"> 24 <li><%= f.submit "更新", class: "btn btn-primary"%></li> 25 </ul> 26 <% end %> 27 </div> 28 </div> 29</div> 30
home_controller
1class HomeController < ApplicationController 2 def top 3 @q = User.ransack(params[:q]) 4 @services = Service.all 5 end 6 7 def profile 8 @user = current_user 9 end 10 11 def update 12 @user = current_user 13 if @user.update(params.permit(:profile_image, :user_name, :self_introduce, :twitter_url, :youtube_url, :instagram_url)) 14 flash[:notice] = "Profile was successfully updated." 15 redirect_to "/" 16 else 17 render 'profile' 18 end 19 end 20 21 def show 22 @user = User.find(params[:id]) 23 @user_movies = @user.movies 24 @services = @user.services 25 end 26 27 def search 28 @q = User.ransack(params[:q]) 29 @results = @q.result 30 end 31end 32
_partial.html.erb
1<% if obj.errors.any? %> 2 <% obj.errors.full_messages.each do |message| %> 3 <ul> 4 <li><%= message %></li> 5 </ul> 6 <% end %> 7<% end %> 8
ja.yml
1ja: 2 activerecord: 3 models: 4 user: ユーザー 5 movie: 動画 6 service: サービス 7 attributes: 8 user: 9 user_name: ユーザー名 10
試したこと
form_withにlocal: trueを追加してみましたが結果は変わりませんでした。
何かおかしな点ありますでしょうか?
補足情報(FW/ツールのバージョンなど)
ruby -v 3.1.1p18
rails -v 7.0.4
バリデーションの設定も提示してください。
回答1件
あなたの回答
tips
プレビュー