回答

5

我不知道为什么它的工作原理,但athlon-krum建议删除_paginator.html.erb雷视图文件的paginator.render do块,从此改变它:

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

和这似乎工作。不要忘记在Kaminari方法调用中加上paginator.以使其正常工作(上面的示例显示了此更改,但很容易错过)。

+0

上述例子从与所获得的香草雷局部不同'导轨克雷:视图默认-e erb'但我可以确认,进行类似的改变固定问题。 – starfry

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 
+0

经过一段时间,我认为猴子补丁kaminari是肮脏的解决方案,现在我坚持神经动力学和athlon-krum解决方案。 – shvetsovdm

相关问题