【问题标题】:ActiveAdmin allow users to set per_page value in indexActiveAdmin 允许用户在索引中设置 per_page 值
【发布时间】:2014-10-28 11:39:15
【问题描述】:

ActiveAdmin 文档 explain 如何禁用分页并使用 config.per_page 在资源索引中设置每页的记录数,但我想知道是否有内置方法允许用户设置 @ 987654323@ 重视自己,例如带有下拉菜单?

【问题讨论】:

    标签: ruby-on-rails drop-down-menu pagination settings activeadmin


    【解决方案1】:

    当然可以使用:

    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
    

    【讨论】:

    • 我发现不需要之前的操作。
    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

      我知道这个问题已经有几年的历史了,但是如果我遇到它,其他人可能会,而我终于找到了一种使用一些非常简单的 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. 从 ActiveAdmin 用来管理客户端 per_page 设置的隐藏字段中获取 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. 将每页输入设置为在删除字段之前检索到的值

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

      其他想法

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-15
        • 1970-01-01
        相关资源
        最近更新 更多