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

时间:2014-09-03 20:45:11

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

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

3 个答案:

答案 0 :(得分: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 :(得分:1)

我知道这个问题已经有几年了,但是如果我碰到它,其他人可能和我终于找到了一种方法来完成这个使用一些相当简单的javascript !!

我的设置:

  

使用ActiveAdmin(1.0.0pre)的Rails 4.2

背景:

  
      
  • 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. 添加&#34;可见&#34;输回回格式

    的过滤器部分

    $("form.filter_form").prepend(...

  4. 将per_page输入设置为在删除字段

    之前检索到的值

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

  5. 其他想法

    我在&#34; pre-pended&#34;中硬编码了默认的per_page。输入(即select)到25,因为那是我配置中的默认值。您很可能从rails默认设置中注入此值。

答案 2 :(得分: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]
或者只是在资源中     config.per_page = [25,50,100]