Вы можете использовать gem 'kaminari'
для разбивки на страницы в рельсах.
Выборка пользователей на основе номера страницы:
class UsersController < ApplicationController
def index
per_page = PAGINATION[:users] # you can define it in app_config.yml
users = User.page(params[:page]).per(per_page)
render json: { user_list: users, per_page: per_page, user_count: users.count, success: true }, status: :ok
end
end
В реакции вы можете использовать react-paginate
для рендерингапагинационный блок.
Вы можете отобразить это на экране индекса пользователя
renderPaginateBlock = () => {
const { user_count, per_page } = this.props;
if (user_count > per_page) {
return (
<div align='center'>
<ReactPaginate
previousLabel={"<"} nextLabel={">"} marginPagesDisplayed={2}
pageRangeDisplayed={5} pageCount={this.props.user_count/this.props.per_page}
onPageChange={(data) => this.getUserWithPagination(data.selected + 1)}
containerClassName={"pagination custom"} subContainerClassName={"pages pagination"}
activeClassName={"active"}
/>
</div>
);
}
else {
return null;
}
}
Это установить current_page и получить доступ к API:
getUserWithPagination = (activePageNo) => {
const { fetchUsers } = this.props;
fetchUsers(activePageNo)
}