1

我很难自定义默认的 kaminari 模板。

我已经使用生成器创建了 kaminari 模板文件。在 kaminari/paginator.html.haml 中:

= paginator.render do
  %nav.pagination

我要做的就是访问其中的 actionview 助手,例如 link_to 或 render。我搜索了源代码,但找不到传递给此渲染方法的帮助程序的任何倾斜度。

本质上,能够做到这一点:

= paginator.render do
  %nav.pagination
    = render :partial => 'custom links'
    = link_to "custom link", custom_path

..会解决我的问题。

4

3 回答 3

6

我没有得到满意的答案,所以我将提交我自己的解决方案。

助手不能在paginator.render块中使用。

所以,首先我生成 kaminari 自定义模板文件:

rails g kaminari:views default -e haml

使用以下内容创建一个新文件 kaminari/custom.html.haml:

#pagination
  = paginate custom
  = render :partial => "kaminari/custom_view_file"

paginate @results将视图文件中的kaminari 分页器助手 ( ) 替换为:

= render :partial => "kaminari/custom", :object => @results
于 2012-06-04T03:25:08.843 回答
1

你应该能够做这样的事情:

# /app/views/kaminari/_paginator.html.erb

= paginator.render do
  %nav.pagination
    = render :partial => 'shared/custom'
    = link_to "custom link", custom_path

基本上,您需要提供部分的完整路径,因为它可能不在同一目录中。

编辑:

我认为 Kaminari 不会在 _paginator.html.erb 的 paginate.render 块中导入 rails 视图助手。要自定义分页器生成的输出,您应该
1. 自定义 _next_page.erb.html 等等,您可以在其中使用 rails 助手。我不知道为什么会这样。
2.如果你想在分页器中显示一些常用的html,我建议你把它放在布局中。Paginator 是关于页面导航的。

例如,这是 _prev_page.html.erb:

<span class="prev">
  <%= link_to "google", "www.google.com" %>
  <%# link_to_unless current_page.first?, raw(t 'views.pagination.previous'), url, :rel => 'prev', :remote => remote %>
</span>

我只是注释掉了旧代码并使用了自定义链接。

于 2012-05-31T07:29:42.733 回答
1

刚遇到同样的问题。我的解决方案:

= paginator.render do
  %nav.pagination
    = render :partial => 'custom links'
    = @template.link_to "custom link", custom_path

由于部分渲染发生在 Paginator 的范围内,因此可以使用其实例变量,指向模板(请参阅https://github.com/amatsuda/kaminari/blob/master/lib/kaminari/helpers/paginator.rb

有点hacky,但有效。

于 2013-09-03T13:13:47.583 回答