我花了几个小时试图理解会话,我似乎无法登录。我希望有人可以告诉我我做错了什么。
应用程序控制器
protect_from_forgery with: :exception
helper_method :current_user
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
def authorize
redirect_to '/' unless current_user
end
会话控制器
class SessionsController < ApplicationController
def new
end
def create
@user = User.where(email: params[:email]).first
if @user && @user.authenticate(params[:session][:password])
session[:user_id] = user.id
redirect_to '/'
else
redirect_to '/sessions/new'
end
end
def destroy
session[:user_id] = nil
redirect_to '/'
end
end
用户控制器
class UsersController < ApplicationController
before_action :find_user, only: [:show, :edit, :update, :destroy]
def index
@user = User.all
end
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save!
redirect_to '/'
else
render 'new'
end
end
def show
end
def edit
end
def update
if @user.update
redirect_to '/'
else
render 'edit'
end
end
def destroy
@user.destroy
redirect_to '/'
end
private
def find_user
@user = User.find(params[:id])
end
def user_params
params.require(:user).permit(:email, :username, :password, :about_me)
end
end
会话/新
<%= form_tag('/sessions', method: "POST") do %>
Email: <%= email_field_tag :email %>
Password: <%= password_field_tag :password %>
<%= submit_tag 'Submit' %>
<% end %>
路线
root 'users#index'
resources :sessions, only: [:new, :create, :destroy]
resources :users
如果需要其他代码,请告知我们。此外,如果你知道一个更好的约定,为我的用户添加登录,我愿意学习不同的方法。感谢大家帮助理解这个问题。