現在Progateのプログラムをもとに作成をしています。
htmlのログインのリンクから飛ぶとこのようなエラーが発生しています。
undefined method `forbid_login_user' for #UsersController:0x00007fc083da6ec0
lambda do |target, value, &block|
target, block, method, *arguments = expand(target, value, block)
target.send(method, *arguments, &block)
end
end
htmlのコードを載せます。
html
1<!DOCTYPE html> 2.... 3 <li> 4 <%= link_to("新規登録", "/signup") %> 5 </li> 6 <li> 7 <%= link_to("ログイン", "/users/login") %> 8 </li> 9.... 10</html>
usersのコントローラーのコードも載せます。
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 7 def index 8 @users = User.all 9 end 10 11 def show 12 @user = User.find_by(id: params[:id]) 13 end 14 15 def new 16 @user = User.new 17 end 18 19 def create 20 @user = User.new( 21 name: params[:name], 22 email: params[:email], 23 image_name: "default_user.jpg", 24 password: params[:password] 25 ) 26 if @user.save 27 session[:user_id] = @user.id 28 flash[:notice] = "ユーザー登録が完了しました" 29 redirect_to("/users/#{@user.id}") 30 else 31 render("users/new") 32 end 33 end 34 35 def edit 36 @user = User.find_by(id: params[:id]) 37 end 38 39 def update 40 @user = User.find_by(id: params[:id]) 41 @user.name = params[:name] 42 @user.email = params[:email] 43 44 if params[:image] 45 @user.image_name = "#{@user.id}.jpg" 46 image = params[:image] 47 File.binwrite("public/user_images/#{@user.image_name}", image.read) 48 end 49 50 if @user.save 51 flash[:notice] = "ユーザー情報を編集しました" 52 redirect_to("/users/#{@user.id}") 53 else 54 render("users/edit") 55 end 56 end 57 58def login_form 59end 60 61 def login 62 63 @user = User.find_by(email: params[:email]) 64 65 if @user && @user.authenticate(params[:password]) 66 session[:user_id] = @user.id 67 flash[:notice] = "ログインしました" 68 redirect_to("/posts/index") 69 else 70 @error_message = "メールアドレスまたはパスワードが間違っています" 71 @email = params[:email] 72 @password = params[:password] 73 render("users/login_form") 74 end 75end 76 77 def logout 78 session[:user_id] = nil 79 flash[:notice] = "ログアウトしました" 80 redirect_to("/users/login") 81 end 82 83 def likes 84 @user = User.find_by(id: params[:id]) 85 86 end 87 88 def ensure_correct_user 89 if @current_user.id != params[:id].to_i 90 flash[:notice] = "権限がありません" 91 redirect_to("/posts/index") 92 end 93 end 94 95#private 96 # Use callbacks to share common setup or constraints between actions. 97 #def set_post 98 #@user = User.find(params[:id]) 99 #end 100end 101
何が原因でエラーが発生しているのかわかりません。教えていただけるとありがたいです。
あなたの回答
tips
プレビュー