前提・実現したいこと
ユーザーの新規登録画面を作成しているのですが、新規登録ボタンを押しても、目的のユーザーページに移動せず、ユーザー登録もされない状態です。また、エラーメッセージも出て来ず、コードを見てもおかしい所が見当たりません..
初学者で初歩的なミスをしているかもしれないですが、誰か分かる方がいれば、教えて頂けると嬉しいです。
よろしくお願いいたします。
発生している問題・エラーメッセージ
エラーメッセージは出ていませんでした..
該当のソースコード
user_controller.rb
Ruby
1class UsersController < ApplicationController 2 def new 3 @user = User.new 4 end 5 6 def show 7 @user = User.find(params[:id]) 8 end 9 10 def create 11 @user = User.new(user_params) 12 if @user.save 13 flash[:success] = "テニスコートサーチにようこそ!" 14 redirect_to @user 15 else 16 render 'new' 17 end 18 end 19 20 private 21 22 def user_params 23 params.require(:user).permit(:name, :email, :password, :password_confirmation) 24 end 25end
models/user.rb
Ruby
1 class User < ApplicationRecord 2 before_save { self.email = email.downcase } 3 validates :name, presence: true, length: { maximum: 50 } 4 VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(.[a-z\d\-]+)*.[a-z]+\z/i 5 validates :email, presence: true, length: { maximum: 255 }, 6 format: { with: VALID_EMAIL_REGEX }, 7 uniqueness: true 8 has_secure_password 9 validates :password, presence: true, length: { minimum: 6 } 10end
new.html.erb
Ruby
1<h1>新規登録</h1> 2<form> 3 <div class="mb-3"> 4 <%= form_with(model: @user, local: true) do |f| %> 5 <%= render 'shared/error_messages' %> 6 7 <%= f.label :name, "ニックネーム" %> 8 <%= f.text_field :name, class: "mb-3 form-control", placeholder: '30文字以内で入力してください。' %> 9 10 <%= f.label :email, "メールアドレス" %> 11 <%= f.email_field :email, class: "mb-3 form-control", placeholder: 'メールアドレスを入力してください。' %> 12 13 <%= f.label :password, "パスワード" %> 14 <%= f.password_field :password, class: "mb-3 form-control", placeholder: '半角英数字6文字以上' %> 15 16 <%= f.label :password_confirmation, "パスワード(確認用)" %> 17 <%= f.password_field :password_confirmation, class: "form-control", placeholder: '半角英数字6文字以上' %> 18 19 <%= f.submit "新規登録", class: "mt-3 btn btn-primary" %> 20 <% end %> 21 </div> 22</form>
routes.rb
Ruby
1Rails.application.routes.draw do 2 root 'tennis#home' 3 get '/search', to: 'tennis#search' 4 get '/question', to: 'tennis#question' 5 get '/contact', to: 'tennis#contact' 6 get '/user_create', to: 'users#new' 7 resources :users 8end
試したこと
①そもそもバリデーションがうまくいっていないのか。
ユーザー登録画面で送信してsaveされなかった名前などをRailsコンソールでcreateメソッドを使って、ユーザーを作成しようとした所、問題なく新しいユーザーは作成できました。なので、バリデーションに問題はないと考えています。
②コードの見直し
コードを見直したのですが、他の人のコードと見比べたりしても、おかしな所は見つけられませんでした..
補足情報(FW/ツールのバージョンなど)
Ruby 2.7.4
Ruby on rails 6.1.4
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。