Kaminari remote => true 是否会清除其他参数(如 window)?

Does Kaminari remote => true wipe out other parameters (like window)?

我正在使用 kaminari 分页器并让它在使用和不使用 ajax 的情况下对数组进行分页。我基于 kaminari example app.

构建了应用程序

但是,我刚刚注意到一个问题,并试图弄清楚这是一个错误还是我的误用。

查看:

<%= paginate @pgdata, :remote => true, :window => 2 %>

初始页面加载时,一切正常,包括显示 next/previous 2 个编号的页面(根据 :window => 2)。但是,当您单击下一页、上一页、第一页、最后一页或任何编号的页面时,它会 'forgets' window 设置并恢复为默认值 4。更改默认值对我来说不是一个选项,因为我需要在不同情况下使用不同的 window 设置。

如果删除远程,则不会出现此行为,window 设置会正确保留。

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。日志没有错误。

在发布问题后大约 5 分钟想通了这个问题:这是我的误用。由于我浪费了很多愚蠢的时间来寻找一个非常简单而明显的错误的解决方案,希望这会减少一些人的挫败感。

$('#paginator').html('<%= escape_javascript(paginate(@pgdata, :remote => true).to_s) %>');

需要更改为:

$('#paginator').html('<%= escape_javascript(paginate(@pgdata, :remote => true, :window => 2).to_s) %>');

当然,由于 JS 在第一次点击后替换了视图中的 <%= paginate ... %>,因此您还需要将 window 设置添加到 JS paginate:

", :window => 2"