自定义kaminari分页模板

时间:2012-05-30 17:29:02

标签: ruby-on-rails-3 kaminari

我无法自定义默认的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

..会解决我的问题。

3 个答案:

答案 0 :(得分:4)

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

无法在paginator.render区块中使用助手。

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

rails g kaminari:views default -e haml

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

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

将视图文件中的kaminari paginator helper(paginate @results)替换为:

= render :partial => "kaminari/custom", :object => @results

答案 1 :(得分: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视图助手。 要自定义paginator生成的输出,您应该改为 1.自定义_next_page.erb.html等等,你可以在哪里使用rails helpers。我不知道为什么会这样 2.如果你想显示一些常见的html作为paginator的一部分,我建议你把它放在布局中。 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>

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

答案 2 :(得分: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,但是很有效。