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<'_>>,
) -> Template {
// 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);
if page == 0 {
panic!("Page number cannot be zero");
}
// Setup paginator
let paginator = Post::find()
@ -90,7 +93,7 @@ async fn list(
// Fetch paginated posts
let posts = paginator
.fetch_page(page)
.fetch_page(page - 1)
.await
.expect("could not retrieve posts");

View File

@ -26,9 +26,9 @@
<tr>
<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>
{% 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>
{% endif %}
</td>

View File

@ -24,7 +24,7 @@ impl<'db, S> Paginator<'db, S>
where
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> {
let query = self
.query