Ruby 在 Rails - 只显示 3 个图像 pr 页面

Ruby on Rails - Show only 3 image pr page

在我的应用程序中,我有 PostSlide 个模型。一个Post有很多slides.

目前,在我的 posts#show 视图中,我显示属于 post 的所有幻灯片。

我怎样才能每页只显示 3 slides 并且有一个 下一个和上一个 按钮到下一个

示例: A post 有 20 张幻灯片,它每页只显示 3 张幻灯片,并带有下一步按钮接下来的 3 等等 URL 例如 domain.com/p/posts-title/ps/1domain.com/p/posts-title/ps/2 等等

这是我现在所做的:

  1. posts_controller
  2. 中创建了 with_pagination 操作
  3. 已将其添加到我的路线
  4. 创建了 with_pagination 视图

在with_pagination视图中

- @post.slides.order('sort_order ASC').each_slice(4) do |group|

在路线中

resources :posts, path: 'p' do
    get 'ps/:page', to: 'posts#with_pagination', as: :xyz
    // i have other stuff here
end

在控制器中

def with_pagination
    @post = Post.find_by_slug(params[:post_id])
end

现在我可以显示该页面上的所有幻灯片,但如前所述,我只想显示 3 张幻灯片 pr 页面,其中包含下一页和上一页 link .

Ps:我以前也遇到过几乎相同的问题,但它的工作原理不同,因为另一个问题使用了分页,而分页不是我要找的

在你的控制器上

def with_pagination
    @post = Post.find_by_slug(params[:post_id])
    @slides = @post.slides.order('sort_order ASC').page(params[:page]).per(3)
end

在视图中

- @slides.each do |slide|

您可以使用 "will_paginate" gem 可用于分页功能。

在你的 gem 文件中添加 gem "will_paginate" 并 运行 捆绑安装

在控制器中记下

@slides = @post.slides.paginate(:page => params[:page], :per_page => 3).order('sort_order ASC')

在查看页面中

   *- @slides.each do |slide|
      ......
     end

   = will_paginate @slides*

为了更好地理解,请遵循“https://github.com/mislav/will_paginate