我正在使用Kaminari :: Cells gem,当我在单元格视图中使用paginate方法时,什么都没有显示出来。我检查过,paginate方法只是返回“\ n”。
答案 0 :(得分:6)
我不确定它为何有效,但athlon-krum建议删除paginator.render do
Kaminari视图文件的_paginator.html.erb
块,并将其更改为:
<%= paginator.render do %>
<%- pagination_class ||= '' %>
<ul class="pagination <%= pagination_class %>">
<%= first_page_tag unless current_page.first? %>
<%= prev_page_tag unless current_page.first? %>
<% each_page do |page| -%>
<% if page.left_outer? || page.right_outer? || page.inside_window? -%>
<%= page_tag page %>
<% elsif !page.was_truncated? -%>
<%= gap_tag %>
<% end -%>
<% end -%>
<%= next_page_tag unless current_page.last? %>
<%= last_page_tag unless current_page.last? %>
</ul>
<% end %>
到此:
<%- pagination_class ||= '' %>
<ul class="pagination <%= pagination_class %>">
<%= paginator.first_page_tag unless current_page.first? %>
<%= paginator.prev_page_tag unless current_page.first? %>
<% paginator.each_page do |page| -%>
<% if page.left_outer? || page.right_outer? || page.inside_window? -%>
<%= paginator.page_tag page %>
<% elsif !page.was_truncated? -%>
<%= paginator.gap_tag %>
<% end -%>
<% end -%>
<%= paginator.next_page_tag unless current_page.last? %>
<%= paginator.last_page_tag unless current_page.last? %>
</ul>
这似乎有效。不要忘记将paginator.
添加到Kaminari方法调用中以使其正常工作(上面的示例显示了此更改,但很容易错过)。
答案 1 :(得分:2)
根据我的经验,kaminari
#paginate
助手将@template
指定为调用助手的地方self
的问题。在通常的Rails视图中,@template
将是一个匿名类,视图模板继承自ActionView :: Base。在单元格@template
中将是单元格本身的实例。渲染使用kaminari
时ActionView::OutputBuffer
。这有所不同,因为视图#render
和单元格#render
的行为不同,而单元格#render
不会将任何内容放入输出缓冲区。
快速修复是省略输出缓冲区:
Kaminari::Helpers::Paginator.class_eval do
def render(&block)
instance_eval(&block) if @options[:total_pages] > 1
# @output_buffer
end
end