В моем приложении, когда пользователь входит в систему, он / она перенаправляется на страницу профиля пользователя. Скажем, он / она перенаправлен на http://localhost:3000/users/1
Если он / она заменяет 1 на любое другое число, я хочу, чтобы они перенаправили туда текущий профиль независимо от того, выходят пользователи из базы данных или нет
class SessionsController < ApplicationController
def new
end
def create
user = User.find_by_email(params[:email])
if user && user.authenticate(params[:password])
log_in user
redirect_to user
else
flash.now[:danger] = 'Invalid email/password combination'
render 'new'
end
end
def destroy
@current_user = nil
reset_session
redirect_to root_path
end
end
Контроллер пользователя:
class UsersController < ApplicationController
before_action :logged_in_user, only: [:new, :show, :edit, :update]
before_action :correct_user, only: [:new, :show, :edit, :update]
def index
@users = User.all
end
def new
@user = User.new
end
def create
@user = User.new(set_params)
if @user.save
redirect_to new_sessions_path
else
render 'new'
end
end
def show
@user = User.find(params[:id])
@posts = @user.posts
end
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update(update_params)
redirect_to @user
else
render 'edit'
end
end
private
def set_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
def update_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
def correct_user
@user = User.find(params[:id])
redirect_to(root_url) unless current_user?(@user)
end
end
Текущий, если тип пользователя в строке поиска localhost: 3000 / users / 5 и пользователь с идентификатором 5 не существует в базе данныхэто показывает ошибку
ActiveRecord :: RecordNotFound в UsersController # show Не удалось найти пользователя с 'id' = 3
, но я хочу просто перенаправить на текущий вход в системуСтраница профиля пользователя.
Если пользователи вводят в строке поиска localhost: 3000 / users / 3 и пользователь с этим идентификатором существует в БД, в данный момент он показывает ошибку, что firefox не может обработать этот запрос, но я хочу егоперенаправить на страницу по умолчанию, т.е. на страницу профиля пользователя.