Как проверить, разбиты ли записи на страницы? - PullRequest
1 голос
/ 28 марта 2019

Я использую 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, но, вероятно, есть лучший способ проверить, разбиты ли записи на страницы.

1 Ответ

0 голосов
/ 28 марта 2019
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

ИЛИ

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 %>
...