如何检查记录是否是分页/ will_paginate?

问题描述 投票:1回答:1

我正在使用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

通过观察宝石source code我会用...

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

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

ruby-on-rails ruby ruby-on-rails-5 will-paginate
1个回答
0
投票
def paginated?
  @posts.count > WillPaginate.per_page
end

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

讨论后编辑

模型/ car.rb

class Car
  def paginated? 
    false
  end
end

模型/ post.rb

class Post
  def paginated? 
    true
  end
end

要么

vievs / shard / _universal.html.erb

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

意见/汽车/ index.html.erb

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

意见/职位/ index.html.erb

...
<%= render partial 'shared/_universal.html.erb', locals: { items: @posts } %>
<%= will_paginate @posts %>
© www.soinside.com 2019 - 2024. All rights reserved.