回答

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

相關問題