我正在使用kaminari paginator并且使用和不使用ajax对数组进行分页。我基于kaminari example app构建了应用程序。
然而,我只是注意到了一个问题,并试图弄清楚这是一个错误还是仅仅是我的误用。
查看:
<%= paginate @pgdata, :remote => true, :window => 2 %>
在初始页面加载时,一切都很好,包括显示的下一个/前两个编号页面(根据:window =&gt; 2)。但是,当您点击下一个,上一个,第一个,最后一个或任何编号的页面时,它会忘记&#39;窗口设置并恢复为默认值4.更改默认值对我来说不是一个选项,因为我需要在不同情况下使用不同的窗口设置。
如果删除远程,窗口设置保持正确,则不存在此行为。
JS:
$('#pglist').html("<%= escape_javascript render 'pglist' %>");
$('#paginator').html('<%= escape_javascript(paginate(@pgdata, :remote => true).to_s) %>');
控制器:
@pgdata = Kaminari.paginate_array(
@current_user.somequery
.sort_by(&:created_at)
.reverse)
.page(params[:page])
.per(10)
Rails 4.2.0。日志没有错误。
答案 0 :(得分:1)
在发布问题大约5分钟后想出来:这是我的误用。因为我浪费了大量的时间来寻找解决一个非常简单而明显的错误的解决方案,希望这会让某人有点沮丧。
$('#paginator').html('<%= escape_javascript(paginate(@pgdata, :remote => true).to_s) %>');
需要改为:
$('#paginator').html('<%= escape_javascript(paginate(@pgdata, :remote => true, :window => 2).to_s) %>');
当然,因为JS取代了&lt;%= paginate ...%&gt;在第一次单击后的视图中,您还需要将窗口设置添加到JS分页:
“,:window =&gt; 2”