Ruby on Rails - 仅显示3个图像pr页面

时间:2016-08-29 11:04:38

标签: ruby-on-rails ruby each

在我的申请中,我有Post& Slide个模型。 Post有许多slides

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

如何每页只显示3 slides并且下一个&上一页按钮到下一个

示例:帖子有 20张幻灯片,每个页面只显示3张幻灯片,下一个按钮显示下一个3等,例如,网址为{{ 1}},domain.com/p/posts-title/ps/1等。

这就是我现在所做的:

  1. domain.com/p/posts-title/ps/2
  2. 中创建了with_pagination次操作
  3. 将其添加到我的路线
  4. 创建了posts_controller视图
  5. 在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
    

    现在我可以在该页面上显示所有幻灯片,但如上所述,我只想显示 3张幻灯片 pr页面,其中包含next和prev链接。

    Ps:我以前遇到过几乎相同的问题,但它并没有同样的工作,因为其他人使用分页和分页不是我想要的

2 个答案:

答案 0 :(得分:0)

在您的控制器上

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|

答案 1 :(得分:0)

您可以使用可用于分页功能的“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