Rocket example page number starts from one

This commit is contained in:
Billy Chan 2021-09-20 16:06:17 +08:00 committed by Chris Tsang
parent ce35317daf
commit bb225b12ee
3 changed files with 8 additions and 5 deletions

View File

@ -80,8 +80,11 @@ async fn list(
flash: Option<FlashMessage<'_>>, flash: Option<FlashMessage<'_>>,
) -> Template { ) -> Template {
// Set page number and items per page // Set page number and items per page
let page = page.unwrap_or(0); let page = page.unwrap_or(1);
let posts_per_page = posts_per_page.unwrap_or(DEFAULT_POSTS_PER_PAGE); let posts_per_page = posts_per_page.unwrap_or(DEFAULT_POSTS_PER_PAGE);
if page == 0 {
panic!("Page number cannot be zero");
}
// Setup paginator // Setup paginator
let paginator = Post::find() let paginator = Post::find()
@ -90,7 +93,7 @@ async fn list(
// Fetch paginated posts // Fetch paginated posts
let posts = paginator let posts = paginator
.fetch_page(page) .fetch_page(page - 1)
.await .await
.expect("could not retrieve posts"); .expect("could not retrieve posts");

View File

@ -26,9 +26,9 @@
<tr> <tr>
<td></td> <td></td>
<td> <td>
{% if page == 0 %} Previous {% else %} {% if page == 1 %} Previous {% else %}
<a href="/?page={{ page - 1 }}&posts_per_page={{ posts_per_page }}">Previous</a> <a href="/?page={{ page - 1 }}&posts_per_page={{ posts_per_page }}">Previous</a>
{% endif %} | {% if page == num_pages - 1 %} Next {% else %} {% endif %} | {% if page == num_pages %} Next {% else %}
<a href="/?page={{ page + 1 }}&posts_per_page={{ posts_per_page }}">Next</a> <a href="/?page={{ page + 1 }}&posts_per_page={{ posts_per_page }}">Next</a>
{% endif %} {% endif %}
</td> </td>

View File

@ -24,7 +24,7 @@ impl<'db, S> Paginator<'db, S>
where where
S: SelectorTrait + 'db, S: SelectorTrait + 'db,
{ {
/// Fetch a specific page /// Fetch a specific page; page index starts from zero
pub async fn fetch_page(&self, page: usize) -> Result<Vec<S::Item>, DbErr> { pub async fn fetch_page(&self, page: usize) -> Result<Vec<S::Item>, DbErr> {
let query = self let query = self
.query .query