will_paginate - не показывать информацию о записях страницы, если коллекция пуста или меньше, чем параметр на странице - PullRequest
1 голос
/ 10 сентября 2011

Допустим, у меня есть действие контроллера, которое создает коллекцию WillPaginate:

@comments = WillPaginate::Collection.new(@page_num, 15, @comments.length).concat(comments_to_paginate)

Тогда, на мой взгляд:

<div class="pag">
    <div clas="page_info">
      <%= page_entries_info @comments %>
    </div>
    <%= will_paginate @comments, :container => false %>
</div>

Теперь я хочу НЕ показыватьpage_entries_info выводится, если (1) нет комментариев и (2) если количество записей (например, 7) меньше, чем ограничение на страницу (15).

Как бы вы поступили с этим?

1 Ответ

2 голосов
/ 10 сентября 2011

Вам просто нужно охранять свой page_entries_info с желаемыми условиями

Например

<div class="pag">
  <% if @comments.length > 0 && @comments.total_pages > 1 %>
    <div class="page_info">
      <%= page_entries_info @comments %>
    </div>
  <% end %>
  <%= will_paginate @comments, :container => false %>
</div>

Или вы можете поместить это в свой контроллер и сделать ваш взгляд немного чище, также позволяя вам использовать одну переменную для повторного использования, если вам нужен такой же предохранитель для других частей кода представления.

@comments = WillPaginate::Collection.new(@page_num, 15, @comments.length).concat(comments_to_paginate)
@show_pagination = @comments.length > 0 && @comments.total_pages > 1

Тогда в представлении:

<div class="pag">
  <% if @show_pagination %>
    <div class="page_info">
      <%= page_entries_info @comments %>
    </div>
  <% end %>
  <%= will_paginate @comments, :container => false %>
</div>

Если вы можете справиться с дополнительным div, то это также должно работать

<div class="pag">
  <div class="page_info">
    <%= page_entries_info(@comments) if @show_pagination %>
  </div>
  <%= will_paginate @comments, :container => false %>
</div>
...