Kaminari :: Cells paginate方法不呈现任何内容

时间:2016-02-03 21:29:42

标签: ruby-on-rails kaminari rails-cells trailblazer rails-cells-4

我正在使用Kaminari :: Cells gem,当我在单元格视图中使用paginate方法时,什么都没有显示出来。我检查过,paginate方法只是返回“\ n”。

2 个答案:

答案 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中将是单元格本身的实例。渲染使用kaminariActionView::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