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]"} [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ?[0m [["LIMIT", 1]] ↳ app/controllers/application_controller.rb:5 [1m[35m (0.1ms)[0m [1m[36mbegin transaction[0m ↳ app/controllers/users_controller.rb:26 [1m[36mUser Exists (0.2ms)[0m [1m[34mSELECT 1 AS one FROM "users" WHERE "users"."email" = ? LIMIT ?[0m [["email", "jimequeen@outlook.jp"], ["LIMIT", 1]] ↳ app/controllers/users_controller.rb:26 [1m[35m (0.0ms)[0m [1m[31mrollback transaction[0m ↳ app/controllers/users_controller.rb:26 Rendering users/new.html.erb within layouts/application Rendered users/new.html.erb within layouts/application (0.6ms) [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ?[0m [["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 [1m[36mUser Load (0.3ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ?[0m [["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) [1m[36mCACHE User Load (0.0ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ?[0m [["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"} [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ?[0m [["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 [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ?[0m [["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) [1m[36mCACHE User Load (0.0ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ?[0m [["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[35m (0.5ms)[0m [1m[34mSELECT "emal" FROM "users"[0m [1m[35m (0.3ms)[0m [1m[34mSELECT "emal" FROM "users"[0m [1m[35m (0.3ms)[0m [1m[34mSELECT "users"."email" FROM "users"[0m Started GET "/" for ::1 at 2020-01-17 21:06:38 +0900 [1m[35m (0.5ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m ↳ /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 [1m[36mUser Load (0.5ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ?[0m [["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) [1m[36mCACHE User Load (0.0ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ?[0m [["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 [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ?[0m [["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) [1m[36mCACHE User Load (0.0ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT ?[0m [["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
回答2件
あなたの回答
tips
プレビュー