如何检查记录是否分页/将分页



我正在使用 WillPaginate Ruby gem v3.1.6

鉴于您可能运行@posts = Post.all.paginate(page: params[:page])@posts = Post.all,有没有一种方法可以检查@posts当前是否正在分页?也就是说,@posts是否正在运行/使用 WillPaginate?

我想做一些东西,如下所示:

if @posts.will_paginate? # or @posts.paginated?
  # paginated @posts
else
  # not paginated @posts

通过查看我会使用的 gem 源代码...

def will_paginate? # or paginated?
  @posts.respond_to?(:total_pages)
end

。或者以某种方式检查WillPaginate@posts的类祖先,但可能有更好的方法来检查记录是否被分页。

def paginated?
  @posts.count > WillPaginate.per_page
end

您可以通过 WillPaginate.per_page 在本地或全局 Post 模型上设置per_page

讨论后编辑

型号/汽车.rb

class Car
  def paginated? 
    false
  end
end

model/post.rb

class Post
  def paginated? 
    true
  end
end

views/shared/_universal.html.erb

<!-- renders your universal layout for the number of objects -->
<% @items.each do |item| %>
    <div><%= item.property %></div>
<% end %>

views/cars/index.html.erb

...
<%= render partial 'shared/_universal.html.erb', locals: { items: @cars } %>

views/posts/index.html.erb

...
<%= render partial 'shared/_universal.html.erb', locals: { items: @posts } %>
<%= will_paginate @posts %>

最新更新