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

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

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

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Q&A

解決済

1回答

1382閲覧

DBに保存したい。&エラーメッセージを表示したい。

tattobu

総合スコア16

Ruby

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

0グッド

0クリップ

投稿2021/10/28 15:27

前提・実現したいこと

新規登録でuserをDBに保存したい。と、項目が抜けていたらエラーメッセージを表示させたい。

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

何もエラーメッセージは出てこないのですが、DBに保存できないのと、空で送信するとそのページに留まるもののエラーメッセージが表示されません。 初心者で申し訳ありませんがよろしくお願い致します。

該当のソースコード

application_controller.rb

ruby

1class ApplicationController < ActionController::Base 2 before_action :basic_auth 3 before_action :configure_permitted_parameters, if: :devise_controller? 4 5 private 6 7 def basic_auth 8 authenticate_or_request_with_http_basic do |username, password| 9 username == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"] 10 end 11 end 12 13 def configure_permitted_parameters 14 devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :email, :encrypted_password, :last_name, :first_name, :last_name_kana, :first_name_kana, :birth_date]) 15 end 16end

models/user.rb

ruby

1class User < ApplicationRecord 2 # Include default devise modules. Others available are: 3 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 4 devise :database_authenticatable, :registerable, 5 :recoverable, :rememberable, :validatable 6 7 validates :nickname, presence: true 8 validates :last_name, presence: true 9 validates :first_name, presence: true 10 validates :last_name_kana, presence: true 11 validates :first_name_kana, presence: true 12 validates :birth_date, presence: true 13 14end

views/devise/registrations/new.html.erb

ruby

1<%= render "shared/second-header"%> 2 3<%# 「モデル名」にはUserモデルであれば@userを渡しましょう。「新規登録機能へのパス」は、devise導入後にrails routesを実行してdevise/registrations#createへのパスを確認し、記載してください。 %> 4<%= form_with model: @user, url: user_registration_path, class: 'registration-main', local: true do |f| %> 5<%# //「モデル名」にはUserモデルであれば@userを渡しましょう。「新規登録機能へのパス」は、devise導入後にrails routesを実行してdevise/registrations#createへのパスを確認し、記載してください。 %> 6<div class='form-wrap'> 7 <div class='form-header'> 8 <h1 class='form-header-text'> 9 会員情報入力 10 </h1> 11 </div> 12 13 <%# インスタンスを渡して、エラー発生時にメッセージが表示されるようにしましょう。%> 14 <% render 'shared/error_messages', model: f.object %> 15 <%# //インスタンスを渡して、エラー発生時にメッセージが表示されるようにしましょう。%> 16 17 <div class="form-group"> 18 <div class='form-text-wrap'> 19 <label class="form-text">ニックネーム</label> 20 <span class="indispensable">必須</span> 21 </div> 22 <%= f.text_area :nickname, class:"input-default", id:"nickname", placeholder:"例) furima太郎", maxlength:"40" %> 23 </div> 24 <div class="form-group"> 25 <div class='form-text-wrap'> 26 <label class="form-text">メールアドレス</label> 27 <span class="indispensable">必須</span> 28 </div> 29 <%= f.email_field :email, class:"input-default", id:"email", placeholder:"PC・携帯どちらでも可", autofocus: true %> 30 </div> 31 <div class="form-group"> 32 <div class='form-text-wrap'> 33 <label class="form-text">パスワード</label> 34 <span class="indispensable">必須</span> 35 </div> 36 <%= f.password_field :encrypted_password, class:"input-default", id:"password", placeholder:"6文字以上の半角英数字" %> 37 <p class='info-text'>※英字と数字の両方を含めて設定してください</p> 38 </div> 39 <div class="form-group"> 40 <div class='form-text-wrap'> 41 <label class="form-text">パスワード(確認)</label> 42 <span class="indispensable">必須</span> 43 </div> 44 <%= f.password_field :password_confirmation, class:"input-default", id:"password-confirmation", placeholder:"同じパスワードを入力して下さい" %> 45 </div> 46 <div class="form-group"> 47 <p class='form-info-header'> 48 本人確認 49 </p> 50 <p class='form-info-text'> 51 安心・安全にご利用いただくために、お客さまの本人情報の登録にご協力ください。他のお客さまに公開されることはありません。 52 </p> 53 </div> 54 <div class="form-group"> 55 <div class='form-text-wrap'> 56 <label class="form-text">お名前(全角)</label> 57 <span class="indispensable">必須</span> 58 </div> 59 <div class='input-name-wrap'> 60 <%= f.text_area :last_name, class:"input-name", id:"last-name", placeholder:"例) 山田" %> 61 <%= f.text_area :first_name, class:"input-name", id:"first-name", placeholder:"例) 陸太郎" %> 62 </div> 63 </div> 64 <div class="form-group"> 65 <div class='form-text-wrap'> 66 <label class="form-text">お名前カナ(全角)</label> 67 <span class="indispensable">必須</span> 68 </div> 69 <div class='input-name-wrap'> 70 <%= f.text_area :last_name_kana, class:"input-name", id:"last-name-kana", placeholder:"例) ヤマダ" %> 71 <%= f.text_area :first_name_kana, class:"input-name", id:"first-name-kana", placeholder:"例) リクタロウ" %> 72 </div> 73 </div> 74 <div class="form-group"> 75 <div class='form-text-wrap'> 76 <label class="form-text">生年月日</label> 77 <span class="indispensable">必須</span> 78 </div> 79 <div class='input-birth-wrap'> 80 <%= raw sprintf( 81 f.date_select( 82 :birth_date, 83 class:'select-birth', 84 id:"birth-date", 85 use_month_numbers: true, 86 prompt:'--', 87 start_year: 1930, 88 end_year: (Time.now.year - 5), 89 date_separator: '%s'), 90 "<p> 年 </p>", "<p> 月 </p>") + "<p> 日 </p>" %> 91 </div> 92 <p class='info-text'>※ 本人情報は正しく入力してください。会員登録後、修正するにはお時間を頂く場合があります。</p> 93 </div> 94 <div class="form-group"> 95 <h2 class='form-bottom-text'> 96 「会員登録」のボタンを押すことにより、 97 <span>利用規約</span> 98 <br>に同意したものとみなします 99 </h2> 100 </div> 101 <div class='register-btn'> 102 <%= f.submit "会員登録" ,class:"register-red-btn" %> 103 </div> 104 <p class='register-info'>本人情報の登録について</p> 105</div> 106<% end %> 107 108<%= render "shared/second-footer"%>

views/shared/_error_messages.html.erb

ruby

1<% if model.errors.any? %> 2<div class="error-alert"> 3 <ul> 4 <% model.errors.full_messages.each do |message| %> 5 <li class='error-message'><%= message %></li> 6 <% end %> 7 </ul> 8</div> 9<% end %>

routes.rb

ruby

1Rails.application.routes.draw do 2 devise_for :users 3 root to: "items#index" 4end

試したこと

記述ミスやバリーデーションなど確認しましたが、分からず進めないため質問させていただきました。
よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

自己解決

views/devise/registrations/new.html.erb

ruby

1 <%= f.password_field :encrypted_password, class:"input-default", id:"password", placeholder:"6文字以上の半角英数字" %> 2 <p class='info-text'>※英字と数字の両方を含めて設定してください</p> 3 </div>

のencrypted_passwordの部分を

ruby

1 2 <%= f.password_field :password, class:"input-default", id:"password", placeholder:"6文字以上の半角英数字" %> 3 <p class='info-text'>※英字と数字の両方を含めて設定してください</p> 4 </div>

passwordに変更したら問題なく保存ができた。

エラーメッセージは
views/devise/registrations/new.html.erb

ruby

1 <% render 'shared/error_messages', model: f.object %>

ruby

1 <%= render 'shared/error_messages', model: f.object %>

=が抜けていただけだった。

投稿2021/10/29 13:30

tattobu

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問