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

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

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

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

Ruby on Rails

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

Q&A

解決済

2回答

976閲覧

新規ユーザー登録ができません

akairen

総合スコア18

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2020/01/15 09:18

編集2020/01/17 13:55

Ruby(Rails)初学者で初めてのオリジナルアプリを作成しているのですが新規ユーザー登録ができず、エラーも出ていないのでなにが原因かというのも分からず困っています

該当のソースコード

**users - new.html.erb** <div class="signup-wrapper"> <div class="cont"> <div class="signup-wrapper-main"> <div class="signup-title"> <h1>新規登録</h1> </div> <div class="signup-contents"> <div class="signup-content signup-1"> <%= form_tag("/users/create") do %> <p>ユーザー名</p> <p><input class="signup-time" type="text" name="name" value="<%= @user.name %>"></P> </div> <div class="signup-content signup-2"> <p>メールアドレス</p> <input class="signup-thing" type="text" name="email" value="<%= @user.email %>"> </div> <div class="signup-content signup-2"> <p>パスワード</p> <input class="signup-thing" type="password" name="password" value="<%= @user.password %>"> </div> </div> <input class="edit-submit" type="submit" name="" value="新規登録"> <% end %> </div> </div> </div>
**controllers - users_controller.rb** class UsersController < ApplicationController before_action :authenticate_user,{only:[:index,:show,:edit,:update]} before_action :forbid_login_user,{only:[:new,:create,:login_form,:login]} before_action :ensure_correct_user,{only:[:edit,:update]} def show @user = User.find_by(id: params[:id]) end def new @user = User.new end def create @user = User.new( name: params[:name], email: params[:email], image_name: "pile-up3.jpg", password: params[:password] ) if @user.save session[:user_id] = @user.id redirect_to("/users/#{@user.id}") else render("users/new") end end def edit @user = User.find_by(id: params[:id]) end def update @user = User.find_by(id: params[:id]) @user.name = params[:name] @user.email = params[:email] if params[:image] @user.image_name = "#{@user.id}.jpg" image = params[:image] File.binwrite("public/user_images/#{@user.image_name}",image.read) end if @user.save redirect_to("/users/#{@user.id}") else render("users/edit") end end def login_form end def login @user = User.find_by(email: params[:email]) if @user && @user.authenticate(params[:password]) session[:user_id] = @user.id redirect_to("/posts/index") else @error_message = "メールアドレスまたはパスワードが間違っています" @email = params[:email] @password = params[:password] render("users/login_form") end end def logout session[:user_id] = nil redirect_to("/login") end def ensure_correct_user if @current_user.id != params[:id].to_i redirect_to("/posts/index") end end end
**model - user.rb** class User < ApplicationRecord # has_secure_passwordメソッドを追加してください has_secure_password validates :name, {presence: true} validates :email, {presence: true, uniqueness: true} has_many :posts def posts return Post.where(user_id: self.id) end end
**log** Started POST "/users/create" for ::1 at 2020-01-15 01:34:12 +0900 Processing by UsersController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"M/EPJmOI7JDA7e8zBdWwVMDPGyKKBcLH8Plv6KOakx22384eHhnxNkQH5f6VrV/l1xVF/C8rZVU1a/zd5I+uqQ==", "name"=>"はじめ", "email"=>"jimequeen@outlook.jp", "password"=>"[FILTERED]"} User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ? [["LIMIT", 1]] ↳ app/controllers/application_controller.rb:5  (0.1ms) begin transaction ↳ app/controllers/users_controller.rb:26 User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = ? LIMIT ? [["email", "jimequeen@outlook.jp"], ["LIMIT", 1]] ↳ app/controllers/users_controller.rb:26  (0.0ms) rollback transaction ↳ app/controllers/users_controller.rb:26 Rendering users/new.html.erb within layouts/application Rendered users/new.html.erb within layouts/application (0.6ms) User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ? [["LIMIT", 1]] ↳ app/views/layouts/application.html.erb:22 Completed 200 OK in 98ms (Views: 27.4ms | ActiveRecord: 0.6ms) Started GET "/login" for ::1 at 2020-01-15 01:34:44 +0900 Processing by UsersController#login_form as HTML User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ? [["LIMIT", 1]] ↳ app/controllers/application_controller.rb:5 Rendering users/login_form.html.erb within layouts/application Rendered users/login_form.html.erb within layouts/application (0.8ms) CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ? [["LIMIT", 1]] ↳ app/views/layouts/application.html.erb:22 Completed 200 OK in 38ms (Views: 32.6ms | ActiveRecord: 0.3ms) Started GET "/users/1" for ::1 at 2020-01-15 01:35:06 +0900 Processing by UsersController#show as HTML Parameters: {"id"=>"1"} User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ? [["LIMIT", 1]] ↳ app/controllers/application_controller.rb:5 Redirected to http://localhost:3000/login Filter chain halted as :authenticate_user rendered or redirected Completed 302 Found in 3ms (ActiveRecord: 0.2ms) Started GET "/login" for ::1 at 2020-01-15 01:35:06 +0900 Processing by UsersController#login_form as HTML User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ? [["LIMIT", 1]] ↳ app/controllers/application_controller.rb:5 Rendering users/login_form.html.erb within layouts/application Rendered users/login_form.html.erb within layouts/application (1.0ms) CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ? [["LIMIT", 1]] ↳ app/views/layouts/application.html.erb:22 Completed 200 OK in 38ms (Views: 32.9ms | ActiveRecord: 0.2ms)

試したこと

過去にProgateで同じようなことをやった記憶があり、確認してみたところProgateの8章でユーザー登録の解説があったので、それを参考にしつつ所々コピペしてみたのですが上手くできませんでした

Progate8章↓

https://prog-8.com/rails5/study/8/8#/24

確実に登録されていないlog

[1m (0.5ms) SELECT "emal" FROM "users"  (0.3ms) SELECT "emal" FROM "users"  (0.3ms) SELECT "users"."email" FROM "users" Started GET "/" for ::1 at 2020-01-17 21:06:38 +0900  (0.5ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC ↳ /Users/kuritahajime/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/activerecord-5.2.4.1/lib/active_record/log_subscriber.rb:98 Processing by HomeController#top as HTML User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ? [["LIMIT", 1]] ↳ app/controllers/application_controller.rb:5 Rendering home/top.html.erb within layouts/application Rendered home/top.html.erb within layouts/application (1.7ms) CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ? [["LIMIT", 1]] ↳ app/views/layouts/application.html.erb:22 Completed 200 OK in 246ms (Views: 225.0ms | ActiveRecord: 0.8ms) Started GET "/signup" for ::1 at 2020-01-17 21:06:41 +0900 Processing by UsersController#new as HTML User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ? [["LIMIT", 1]] ↳ app/controllers/application_controller.rb:5 Rendering users/new.html.erb within layouts/application Rendered users/new.html.erb within layouts/application (0.8ms) CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ? [["LIMIT", 1]] ↳ app/views/layouts/application.html.erb:22 Completed 200 OK in 45ms (Views: 26.1ms | ActiveRecord: 0.9ms)
**routes** Rails.application.routes.draw do post "login" => "users#login" #OK get "login" => "users#login_form" #OK post "logout" => "users#logout" post "users/:id/update" => "users#update" get "users/:id/edit" => "users#edit" post "users/create" => "users#create" #OK get "signup" => "users#new" #OK get "users/:id" => "users#show" get "posts/index" get "posts/new" => "posts#new" get "posts/:id" => "posts#show" post "posts/create" => "posts#create" get "posts/:id/edit" => "posts#edit" post "posts/:id/update" => "posts#update" post "posts/:id/destroy" =>"posts#destroy" get "/" => "home#top" #OK get "about" => "home#about" #OK # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end

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

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

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

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

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

winterboum

2020/01/15 09:30

log を見せてください。 log/development.log
akairen

2020/01/15 12:44

すいません、teratailの文字数制限でlog/development.logを全て貼り付けることができませんでしたので一応直近でユーザーの新規登録やログインを試みたときのlogと思われる物を貼らせていただきました もし別の部分のlogをご覧になりたいのでしたらどの部分をみたいのかお教えください
guest

回答2

0

自己解決

new.html.erbの

<div class="signup-content signup-2"> <p>パスワード</p> <input class="signup-thing" type="password" name="password" value="<%= @user.password %>"> </div> </div> <input class="edit-submit" type="submit" name="" value="新規登録"> <% end %> の部分を <div class="signup-content signup-2"> <p>パスワード</p> <input class="signup-thing" type="password" name="password" value="<%= @user.password %>"> </div> <input class="edit-submit" type="submit" name="" value="新規登録"> <% end %> </div> にしたら解消されました

投稿2020/01/19 13:58

akairen

総合スコア18

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

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

0

logに User Exists とありますね。
既にjimequeen@outlook.jpが登録されているから失敗しただけのことに見えます

投稿2020/01/15 13:11

winterboum

総合スコア23329

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

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

akairen

2020/01/16 02:08

ご回答ありがとうございます すいません、これは多分一度登録したはずのアカウントにログインできなかったため新規登録に失敗したのかと思い同じ情報で新規登録しようとしたときのものです... 上記のアカウントにログインできなかったため別のアカウントを作成してログインしようとしたのですが ①本来であれば新規ユーザー登録した際にそのアカウントのページに飛ぶようになっているはずなのに飛ばない ②ログイン画面からログインしようとしてもログインできない という問題が起こってしまいます
winterboum

2020/01/16 02:32

>多分一度登録したはずのアカウントにログインできなかったため新規登録に失敗したのかと思い同じ情報で新規登録しようとしたときのものです ということは登録出来ているということです。 全くあたらしいemailで登録して、その時のlogをください。
akairen

2020/01/16 08:51

>全くあたらしいemailで登録して、その時のlogをください。 質問文にlogを追加しておきました ちなみに ユーザー名:れん メールアドレス:123456789@outlook.jp パスワード:123456789 で登録しました
winterboum

2020/01/16 09:23

それ登録の時のではないですね Started POST "/users/create" for ::1 at 2020-01-15 01:34:12 +0900 Processing by UsersController#create as HTML で始まるやつです
akairen

2020/01/16 09:38

修正しておきました よろしくお願いします
winterboum

2020/01/16 11:00

Started GET "/users/create" f になってますが? POST でなく。 かつ、paramater に emailとかがない
akairen

2020/01/16 11:32

すみません、それらしきものが分からなかったので新しいアカウントを作り、出たlogを全て貼り付けさせていただきました ユーザー名:れん メールアドレス:987654321@outlook.jp パスワード:987654321 よろしくお願いします
winterboum

2020/01/16 11:50 編集

POSTのlogを! 本当に無いとするとcreateが呼ばれていないということですから原因確認の方向性が全く違います。本当にPOSTのllogが無いのかどうか確認してください。 新規作成のボタンを押す直前まですすめ、 サーバーを止め logを削除し サーバを起動して 新規作成ボタンをおす すると最初がPOSTになっていると思います
akairen

2020/01/16 11:59

すいません、先程のうーざー登録ではなぜかPOSTが出てこなかったので ユーザー名:れん メールアドレス:123456789@outlook.jp パスワード:123456789 にあったPOSTを貼らせていただきます よろしくお願いします
winterboum

2020/01/16 12:16

それも登録済? INSERTなしで終わってます。 新しいemailで試してください
winterboum

2020/01/16 12:18

新規作成前に rails c にて User.pluck(:emal) して無いemailで新規作成し、 蓋タブ User.pluck(:email) してみてください。 今日はこれで寝ます
akairen

2020/01/17 12:09

確実に登録済みでないユーザーを登録したのですが、POSTのllogは出ませんでした 一応でたlogを全て質問文の追記のところに貼っておきます
winterboum

2020/01/17 12:12

これはやりました? ====== 新規作成前に rails c にて User.pluck(:emal) して無いemailで新規作成し、 蓋タブ User.pluck(:email) してみてください。 今日はこれで寝ます
winterboum

2020/01/17 12:16

Processing by UsersController#create を検索してください。 あればその辺りのlogを。 なければ createが呼ばれていないということなので、念の為routesを見せてください・
akairen

2020/01/17 12:16

やってみたのですが (0.5ms) SELECT "emal" FROM "users" や (0.3ms) SELECT "emal" FROM "users" というものが出てきました
akairen

2020/01/17 12:17

上記のものがなんなのか調べてみたものの分からず,,,という感じです
winterboum

2020/01/17 12:18

その結果を見たいです emailの一覧がでませんでしたか?
akairen

2020/01/18 02:06 編集

emailの一覧は出ていないですね... irb(main):001:0> User.pluck(:emal) (0.5ms) SELECT "emal" FROM "users" => [] irb(main):002:0> User.pluck(:emal) (0.3ms) SELECT "emal" FROM "users" => [] irb(main):003:0> User.pluck(:email) (0.3ms) SELECT "users"."email" FROM "users" => [] というものが出ただけでした >Processing by UsersController#create を検索してください。 あればその辺りのlogを。 なければ createが呼ばれていないということなので、念の為routesを見せてください・ Processing by UsersController#createがなかったのでroutesを貼っておきました
akairen

2020/01/19 13:57

new.html.erbの <div class="signup-content signup-2"> <p>パスワード</p> <input class="signup-thing" type="password" name="password" value="<%= @user.password %>"> </div> </div> <input class="edit-submit" type="submit" name="" value="新規登録"> <% end %> の部分を <div class="signup-content signup-2"> <p>パスワード</p> <input class="signup-thing" type="password" name="password" value="<%= @user.password %>"> </div> <input class="edit-submit" type="submit" name="" value="新規登録"> <% end %> </div> にしたら解消されました お手数をおかけしました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問