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

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

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

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

Q&A

解決済

1回答

1912閲覧

新規登録失敗時に、エラーメッセージを表示させたい

YugoTokonami

総合スコア21

Ruby on Rails

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

0グッド

0クリップ

投稿2021/08/26 06:16

編集2021/08/26 06:36

新規登録でエラーメッセージを表示させたい

Ruby on rails でオリジナルアプリ(ブログ的な)を作成しているものです。
新規登録・ログインで正しく入力されなかった時にエラーメッセージを表示させようと思っているのですが、新規登録でエラーが表示されずに、新規登録ページに遷移するとエラーになってしまいました。

ActionView::MissingTemplate in Devise::Registrations#new

Showing /Users/yukahayuusatoru/projects/b_blog/app/views/devise/registrations/new.html.erb where line #7 raised: Missing partial shared/_error_messages with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}. Searched in: * "/Users/yukahayuusatoru/projects/b_blog/app/views" * "/Users/yukahayuusatoru/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/devise-4.8.0/app/views" * "/Users/yukahayuusatoru/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actiontext-6.0.4/app/views" * "/Users/yukahayuusatoru/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionmailbox-6.0.4/app/views" Extracted source (around line #7): </div> <%= render 'shared/error_messages', model: f.object %>←renderがおかしいと言われている? <div class="form-group"> <div class="form-text-wrap">

app/views/devise/registrations/new.html.erb

<%= form_with model: @user, url: user_registration_path, class: "registration-main", local: true do |f| %> <div class="form-wrap"> <div class="form-header"> <%= link_to 'Welcome to B-blog!', root_path, class:"form-header-text" %> </div> <%= render 'shared/error_messages', model: f.object %>←ここでエラーメッセージを新規登録画面で表示させる記述を行なっている <div class="form-group"> <div class="form-text-wrap"> <label class="form-text">User Name</label> </div> <%= f.text_field :name, class:"input-default", id: "user_name", placeholder:"blogさん" %> </div> <div class="form-group"> <div class="form-text-wrap"> <label class="form-text">Profile</label> </div> <%= f.text_area :profile, class:"input-default", id:"user_profile", placeholder:"Please introduce yourself" %> </div> <div class="form-group"> <div class="form-text-wrap"> <label class="form-text">Email</label> </div> <%= f.email_field :email, class:"input-default", id:"email",placeholder:"sample@sample.com", autofocus: true, autocomplete: "email" %> </div> <div class="form-group"> <div class="form-text-wrap"> <label class="form-text">Password</label> </div> <%= f.password_field :password, class:"input-default", id:"password", placeholder:"6 characters minimum", autocomplete: "new-password" %> </div> <div class="form-group"> <div class="form-text-wrap"> <label class="form-text">Confirm Password</label> </div> <%= f.password_field :password_confirmation, class:"input-default", id:"password-confirmation", placeholder:"Reenter password", autocomplete: "new-password" %> </div> <div class="actions"> <%= f.submit "Sign up", class:"register-btn" %> </div> </div> <% end %>

app/views/devise/shared/_error_messages/html.erb

<% if model.errors.any? %> <div class="error-alert"> <ul> <% model.errors.full_messages.each do |message| %> <li class='error-message'><%= message %></li> <% end %> </ul> </div> <% end %>

試したこと

ビューの_error_messages.html.erbにエラーを表示させる記述を行い、そして、そのエラーをどこに表示させるかで、新規登録の部分に「render」を使って表示させる記述を行いましたが、新規登録画面に遷移した時点でエラーになってしまいます。

補足情報(FW/ツールのバージョンなど)

新規登録機能はdeviseを導入して行なっています。
いくら模索してもわかりませんでした。どなたかこの問題を教えていただけると幸いです。

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

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

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

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

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

guest

回答1

0

自己解決

_error_messages.html.erbを正しいディレクトリに配置する

renderで呼び出していた記述が間違っていて、エラーになっていました。なので、「ディレクトリの配置を変える」か、「renderの記述を変える」で、前者の方を選び配置を変えたところ、正しく表示されました。

投稿2021/08/30 09:31

YugoTokonami

総合スコア21

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問