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

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

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

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

Q&A

解決済

1回答

553閲覧

新規登録画面からUserを作成しようとしても作成されない

3104

総合スコア0

Ruby

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

0グッド

0クリップ

投稿2021/08/27 03:11

前提・実現したいこと

ユーザーの新規登録画面を作成しているのですが、新規登録ボタンを押しても、目的のユーザーページに移動せず、ユーザー登録もされない状態です。また、エラーメッセージも出て来ず、コードを見てもおかしい所が見当たりません..
初学者で初歩的なミスをしているかもしれないですが、誰か分かる方がいれば、教えて頂けると嬉しいです。
よろしくお願いいたします。

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

エラーメッセージは出ていませんでした..

該当のソースコード

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

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

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

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

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

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

guest

回答1

0

自己解決

new.html.erbのformタグを削除で解決しました。
formタグの中にform_withメソッドを使っていた為、formタグが重複してPOSTアクションが正常に送信できなかった事が原因でした。

投稿2021/08/27 08:33

3104

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問