我正在使用 Kaminari::Cells gem,当我在单元格视图中使用 paginate 方法时,没有任何显示。我检查了一下,分页方法只是返回“\n”。
问问题
951 次
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-cells
gem 不适用于 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 回答