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

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

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

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

573閲覧

【Ruby on Rails】新規投稿でのエラーメッセージが表示されない。

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2021/12/03 11:59

編集2021/12/16 06:18

前提・実現したいこと

記事の新規投稿の際に入力に不備があった場合、エラーメッセージを表示させたい。

発生している問題・エラーメッセージ

ブラウザにエラーメッセージが表示されない。

該当のソースコード

<section class="hero is-success"> <div class="hero-body"> <div class="container"> <h1 class="title"> ゲーム記事作成 </h1> </div> </div> </section> <% if @game.errors.any? %> <div class="notification is-danger"> <h2><%= pluralize(@game.errors.count, "error") %> prohibited this object from being saved: not successfully</h2> <ul> <% @game.errors.full_messages.each do |message| %> <li><%= message %></li> <% end %> </ul> </div> <% end %> <section class="section"> <div class="container"> <div class="columns is-centered"> <div class="column is-6"> <%= form_with model: @game do |f| %> <div class="field"> <%= f.label :title, "ゲーム名", class: "label" %> <%= f.text_field :title, class: "input" %> </div> <div class="field"> <%= f.label :body, "楽しみ方", class: "label" %> <%= f.text_area :body, class: "textarea" %> </div> <div class="field"> <%= f.label :image, "写真", class: "label" %> <%= f.attachment_field :image, class: "input" %> </div> <%= f.submit "投稿", class: "button is-success" %> <% end %> </div> </div> </div> </section>
def new @game = Game.new end def create @game = Game.new(game_params) @game.user_id = current_user.id if @game.save redirect_to game_path(@game), notice: "投稿に成功しました。" else render :new end end

試したこと

コントローラーのnewアクションで定義しているインスタンス変数の見直しも行いましたが特に問題になるような箇所は見当たらず、ターミナルでのロールバックトランザクションが起きているので機能的には問題ないかと思われます。

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

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

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

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

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

winterboum

2021/12/03 13:11

Controllerを載せてください
退会済みユーザー

退会済みユーザー

2021/12/03 14:40

コントローラーを追加しました。 よろしくお願い致します!
winterboum

2021/12/03 23:12

view の new全体を見せてください。 if @game.errors.any? がどういう文脈で現れるのかがわからないので
退会済みユーザー

退会済みユーザー

2021/12/04 04:32 編集

viewのnewを全体に変更致しました!
winterboum

2021/12/04 07:49

う〜〜む 良さげですね。 エラーがあることは確実なのですか?
退会済みユーザー

退会済みユーザー

2021/12/04 10:17

そうですね、、 本来であればバリデーションのエラーメッセージが表示されると思うのですが何度試しても表示されません。 マイページの編集画面でもnewと同じようなバリデーションのエラーメッセージを表示させるためのコードを書いているのですが、こちらはしっかりと表示されるんです。。
ASOBU_dev

2021/12/18 07:20

根本的な解決には至らないと思いますが、rails s の再起動は試していますか?(二週間前だから流石に試してるか、、、)
退会済みユーザー

退会済みユーザー

2021/12/18 07:32

はい!何度も試しました????
winterboum

2021/12/18 10:31

showではなくnewに行くのだが、エラーメッセージがでない のですね?
退会済みユーザー

退会済みユーザー

2021/12/18 10:45

そうですね! コントローラー記述してある通りrenderでnewを呼び出すようにしています!
winterboum

2021/12/18 10:46

if @game.save でなく if @game.save! にするとどうなります?
退会済みユーザー

退会済みユーザー

2021/12/18 11:11

何も変化無しです???? ターミナルでもrollback transactionが出ているので機能的には正常に動いているのでviewに問題があるんですかね?
winterboum

2021/12/18 12:29

save に成功していないなら、save! で例外で止まると思うのですが、止まらなかった? ということは成功しているから showに行くはず。 はて。。。。
ASOBU_dev

2021/12/20 13:10

@game.errors.count で出力してみて、errorがあるか調べてみることはできますか? rollback transactionが出ていても、そもそも当該部分にエラーが渡っていなければ表示件数は0になると思うので。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問