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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ActiveAdmin允许用户在索引中设置per_page值相关的知识,希望对你有一定的参考价值。

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

答案

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

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]

另一答案

它当然可以使用:

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
另一答案

我知道这个问题已经有几年了,但如果我遇到它,其他人可能会和我终于找到一种方法来完成这个使用一些非常直接的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默认设置中注入此值。

以上是关于ActiveAdmin允许用户在索引中设置per_page值的主要内容,如果未能解决你的问题,请参考以下文章

如何根据索引在数据框中设置值[重复]

Django model 中设置联合约束和联合索引

html 允许用户选择表单的电子邮件地址。此代码允许您在表单中设置“选择”字段,以允许用户设置

html 允许用户选择表单的电子邮件地址。此代码允许您在表单中设置“选择”字段,以允许用户设置

html 允许用户选择表单的电子邮件地址。此代码允许您在表单中设置“选择”字段,以允许用户设置

如何在反应应用程序中设置系统偏好暗模式,但还允许用户来回切换当前主题