我无法自定义默认的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
..会解决我的问题。
答案 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,但是很有效。