前提・実現したいこと
Railsでログイン時にエラーが出るようになりました(サインイン時も同様です)。
ログイン機能は下記のコードで過去に実装が終わっており、最近はRuby Deviseを使いフォロー機能を実装しておりました(最近ログイン機能は特にいじっておりません)。
しかしフォロー機能実装時にフォローボタンが表示されない問題が起こり、その原因がどうやらログイン機能にある事が分かった為にログアウト・ログインをし直すと、以前は出来ていたログインでエラーが発生しました。
参考質問:【Rails】フォロー機能実装時にフォローボタンが表示されない
久々にログアウト・ログインをし直して気付いた為、いつから(何が原因で)この不具合が裏で出ていたのかが分かりません。どなたかお知恵を拝借出来ましたら幸いです。
発生している問題・エラーメッセージ
ArgumentError in UsersController#login wrong number of arguments (given 0, expected 1) def login @user = User.find_by(email: params[:email]) **if @user && @user.authenticate(params[:password])** session[:user_id] = @user.id flash[:notice] = "ログインしました" redirect_to("/posts/index")
該当のソースコード(users_controller.rb)
Ruby
1class UsersController < ApplicationController 2 before_action :authenticate_user, {only: [:index, :show, :edit, :update]} 3 before_action :forbid_login_user, {only: [:new, :create, :login_form, :login]} 4 before_action :ensure_correct_user, {only: [:edit, :update]} 5 6 def index 7 @users = User.all 8 end 9 10 def show 11 @user = User.find_by(id: params[:id]) 12 end 13 14 def new 15 @user = User.new 16 end 17 18 def create 19 @user = User.new( 20 name: params[:name], 21 email: params[:email], 22 image_name: "default_user.jpg", 23 password: params[:password] 24 ) 25 if @user.save 26 session[:user_id] = @user.id 27 flash[:notice] = "ユーザー登録が完了しました" 28 redirect_to("/users/#{@user.id}") 29 else 30 render("users/new") 31 end 32 end 33 34 def edit 35 @user = User.find_by(id: params[:id]) 36 end 37 38 def update 39 @user = User.find_by(id: params[:id]) 40 @user.name = params[:name] 41 @user.email = params[:email] 42 if params[:image] 43 @user.image_name = "#{@user.id}.jpg" 44 image = params[:image] 45 File.binwrite("public/user_images/#{@user.image_name}", image.read) 46 end 47 if @user.save 48 flash[:notice] = "ユーザー情報を編集しました" 49 redirect_to("/users/#{@user.id}") 50 else 51 render("users/edit") 52 end 53 end 54 55 def login_form 56 end 57 58 def login 59 @user = User.find_by(email: params[:email]) 60 if @user && @user.authenticate(params[:password]) 61 session[:user_id] = @user.id 62 flash[:notice] = "ログインしました" 63 redirect_to("/posts/index") 64 else 65 @error_message = "メールアドレスまたはパスワードが間違っています" 66 @email = params[:email] 67 @password = params[:password] 68 render("users/login_form") 69 end 70 end 71 72 def logout 73 session[:user_id] = nil 74 flash[:notice] = "ログアウトしました" 75 redirect_to("/login") 76 end 77 78 def likes 79 @user = User.find_by(id: params[:id]) 80 @likes = Like.where(user_id: @user.id) 81 end 82 83 def ensure_correct_user 84 if @current_user.id != params[:id].to_i 85 flash[:notice] = "権限がありません" 86 redirect_to("/posts/index") 87 end 88 end 89 90 def top 91 @user = User.find_by(id: params[:id]) 92 @likes = Like.where(user_id: @current_user.id) 93 end 94 95 def following 96 @title = "フォロー" 97 @user = User.find(params[:id]) 98 @users = @user.followings 99 render 'show_follow' 100 end 101 102 def followers 103 @title = "フォロワー" 104 @user = User.find(params[:id]) 105 @users = @user.followers 106 render 'show_follow' 107 end 108 109end
該当のソースコード(login_form.html.erb)
Ruby
1<div class="main users-new"> 2 <div class="container"> 3 <div class="form-heading">ログイン</div> 4 <div class="form users-form"> 5 <div class="form-body"> 6 <% if @error_message %> 7 <div class="form-error"> 8 <%= @error_message %> 9 </div> 10 <% end %> 11 <%= form_tag("/login") do %> 12 <p>メールアドレス</p> 13 <input name="email" value="<%= @email %>"> 14 <p>パスワード</p> 15 <input type="password" name="password" value="<%= @password %>"> 16 <input type="submit" value="ログイン"> 17 <% end %> 18 </div> 19 </div> 20 </div> 21</div>
該当のソースコード(routes.rb)
Ruby
1Rails.application.routes.draw do 2 devise_for :users 3 post "likes/:post_id/create" => "likes#create" 4 post "likes/:post_id/destroy" => "likes#destroy" 5 6 get "login" => "users#login_form" 7 post "login" => "users#login" 8 post "logout" => "users#logout" 9 10 post "users/:id/update" => "users#update" 11 get "users/:id/edit" => "users#edit" 12 post "users/create" => "users#create" 13 get "signup" => "users#new" 14 get 'users/index' => 'users#index' 15 get "users/:id" => "users#show" 16 get "users/:id/likes" => "users#likes" 17 get "/" => "users#top" 18 19 get 'posts/index'=> 'posts#index' 20 get "posts/new" => "posts#new" 21 get "posts/:id" => "posts#show" 22 post "posts/create" => "posts#create" 23 get "posts/:id/edit" => "posts#edit" 24 post "posts/:id/update" => "posts#update" 25 post "posts/:id/destroy" => "posts#destroy" 26 get "posts/search" => "posts#search" 27 28 get 'about/about' 29 get 'home/top' => 'home#top' 30 get 'top' => 'home#top' 31 get 'about' => 'about#about' 32 33 resources :users do 34 member do 35 get :following, :followers, :users_tweets 36 end 37 end 38 resources :relationships, only: [:create, :destroy] 39 40 # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 41end
補足情報(FW/ツールのバージョンなど)
ruby 2.6.4p104
RubyGems 3.0.3
Rails 5.2.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/22 11:09
2020/01/22 15:52 編集
2020/01/23 10:42
2020/01/23 14:29
2020/01/24 10:17
2020/01/30 09:30
2020/02/04 12:51
2020/02/09 23:33