ActiveAdmin允许用户在索引中设置per_page值

问题描述 投票:3回答:3

ActiveAdmin docs explain如何禁用分页并使用config.per_page设置资源索引中每页的记录数,但我想知道是否有一种内置方法允许用户自己设置per_page值,例如有一个下拉?

ruby-on-rails drop-down-menu pagination settings activeadmin
3个回答
0
投票

不幸的是,没有这种可能性。您只能将其全局设置为默认值

config.default_per_page = 50 #in config/initializers/active_admin.rb

或者如您已经提到的那样使用config.per_page为每个资源设置它。

要启用下拉per_page设置config / initializers / active_admin.rb:config.default_per_page = [25,50,100] 或者只是在资源中配置.per_page = [25,50,100]


2
投票

它当然可以使用:

ActiveAdmin.register MyModel do

  before_action only: :index do
    unless params[:per_page]
      # Default pagination option if it's not already set.
      @per_page = 30
    end
  end

  # The page drop down options.
  config.per_page = [10, 20, 30, 50, 75, 100]

  # .. rest of your activeadmin code.

end

1
投票

我知道这个问题已经有几年了,但如果我遇到它,其他人可能会和我终于找到一种方法来完成这个使用一些非常直接的javascript !!

我的设置:

带有ActiveAdmin的Rails 4.2(1.0.0pre)

背景:

  • ActiveAdmin确实解释了per_page查询字符串参数(如果传入)
  • ActiveAdmin使用隐藏字段#hidden_active_admin_per_page字段(在索引页面的过滤器部分中)来保持此设置跨越其他过滤/分页(即,当此设置更改时,它将新值作为查询字符串参数与其他过滤条件一起发送)

我决定利用这个内置功能,只需公开这个“隐藏”字段,并使其对管理员可见(作为下拉列表)。

我用的代码

$(document).ready(function() {

  var per_page_qty = $("#hidden_active_admin_per_page").val();

  $("#hidden_active_admin_per_page").remove();

  $("form.filter_form").prepend('
    <div class="select input optional filter_form_field filter_select" id="per_page_input">
      <label for="per_page" class="label">Results Per Page</label>
      <select name="per_page" id="hidden_active_admin_per_page">
        <option selected="selected" value="25">25</option>
        <option value="50">50</option>
        <option value="100">100</option>
        <option value="500">500</option>
        <option value="1000">1000</option>
      </select>
    </div>');

  if (typeof per_page_qty !== 'undefined') {
    $("#hidden_active_admin_per_page").val(per_page_qty);
  }
});

这个怎么运作

  1. 从隐藏字段中获取per_page值,ActiveAdmin用于管理客户端上的per_page设置 var per_page_qty = $("#hidden_active_admin_per_page").val();
  2. 删除由活动管理员添加的隐藏字段(因为我们cannot simply unhide the hidden field并且您请求下拉列表:)) $("#hidden_active_admin_per_page").remove();
  3. 将“可见”输入添加回表单的过滤器部分 $("form.filter_form").prepend(...
  4. 将per_page输入设置为在删除字段之前检索的值 $("#hidden_active_admin_per_page").val(per_page_qty);

额外的想法

我将“pre-pended”输入(即select)中的默认per_page硬编码为25,因为这是我配置中的默认值。您很可能从rails默认设置中注入此值。

© www.soinside.com 2019 - 2024. All rights reserved.