4

我正在使用 Kaminari::Cells gem,当我在单元格视图中使用 paginate 方法时,没有任何显示。我检查了一下,分页方法只是返回“\n”。

4

3 回答 3

6

我不确定它为什么起作用,但athlon-krum建议删除Kaminari 视图文件的paginator.render do块,将其更改为:_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 方法调用之前添加以使其工作(上面的示例显示了这种更改,但很容易错过)。

于 2016-02-03T21:29:42.100 回答
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
于 2016-05-31T05:16:02.770 回答
0

我知道这个问题已经有将近 6 年的历史了,但它确实帮助我让 Kaminari 和 Cells 一起玩得很好。kaminari-cellsgem 不适用于 Rails 6,所以这就是我为了让它在我的项目中工作而做的。它基本上只是两个文件,所以我将它们添加到我的项目中。

# app/helpers/kaminary/helpers/cells_helper.rb
require 'kaminari/helpers/helper_methods'
require 'cell/partial'

module Kaminari
  module Helpers
    module CellsHelper
      include Kaminari::Helpers::HelperMethods
      include ActionView::Helpers::OutputSafetyHelper
      include ActionView::Helpers::TranslationHelper
      include Cell::ViewModel::Partial

      def paginate(scope, paginator_class: Kaminari::Helpers::Paginator, template: nil, **options)
        options = options.reverse_merge(:views_prefix => "../views/")
        super
      end
    end
  end
end
# app/models/concerns/kaminary/cells.rb
module Kaminari
  module Cells
    extend ActiveSupport::Concern

    included do
      include Kaminari::Helpers::CellsHelper
    end
  end
end
于 2021-10-20T23:25:05.027 回答