質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

Q&A

解決済

1回答

686閲覧

railsでバリデーションのエラーメッセージが表示されない。

.taniyan

総合スコア17

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

0グッド

0クリップ

投稿2022/10/23 01:28

前提

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/10/23 01:40

バリデーションの設定も提示してください。
guest

回答1

0

ベストアンサー

Rails7でTurboを使ってエラーを表示するのであればstatus: :unprocessable_entityが必要になります。

Ruby

1render 'profile', status: :unprocessable_entity

投稿2022/10/23 11:48

no1knows

総合スコア3365

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

.taniyan

2022/10/23 11:50

バリデーションエラーのメッセージを表示することが出来ました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問