today_ai_weather/app/controllers/users_controller.rb
songtianlun 022eae3029 feat: add pagination to user index view
- Integrate Kaminari for pagination of users
- Update users_controller to paginate users
- Add pagination views for first, last, next, and previous pages
- Seed database with example users for testing

This commit introduces pagination to the user index view, allowing
for better navigation through large sets of users. The Kaminari gem
is utilized to handle pagination, improving the user experience by
reducing load times and enhancing usability. Additionally, the
seeding script has been updated to create multiple users for
better testing of the pagination feature.
2025-01-05 17:50:33 +08:00

69 lines
1.4 KiB
Ruby

class UsersController < ApplicationController
include SessionsHelper
before_action :logged_in_user, only: [ :index, :edit, :update ]
before_action :correct_user, only: [ :edit, :update ]
def index
# @users = User.all
# @users = User.order(:name).page(params[:page])
@users = User.page(params[:page])
end
def show
@user = User.find(params[:id])
# debugger
end
def new
@user = User.new
# debugger
end
def create
@user = User.new(user_params)
if @user.save
reset_session
log_in @user
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
# redirect_to user_url(@user)
else
render "new"
end
end
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update(user_params)
flash[:success] = "Profile updated"
redirect_to @user
# redirect_to user_url(@user)
else
render "edit"
end
end
private
def user_params
params.require(:user).permit(:name, :email, :password,
:password_confirmation)
end
def logged_in_user
unless logged_in?
store_location
flash[:danger] = "Please log in."
redirect_to login_url
end
end
def correct_user
@user = User.find(params[:id])
redirect_to(root_url) unless current_user?(@user)
end
end