Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ActiveAdmin允许用户在索引中设置每页值_Ruby On Rails_Drop Down Menu_Pagination_Settings_Activeadmin - Fatal编程技术网

Ruby on rails ActiveAdmin允许用户在索引中设置每页值

Ruby on rails ActiveAdmin允许用户在索引中设置每页值,ruby-on-rails,drop-down-menu,pagination,settings,activeadmin,Ruby On Rails,Drop Down Menu,Pagination,Settings,Activeadmin,ActiveAdmin说明了如何使用config.per_page禁用分页并设置资源索引中每页的记录数,但我想知道是否有一种内置方法允许用户自己设置per_page值,例如使用下拉菜单?不幸的是,没有这种可能性。 您只能将其全局设置为默认值 config.default_per_page = 50 #in config/initializers/active_admin.rb 或者,如前所述,通过使用config.per_页面对每个资源进行设置 要启用每页下拉设置config/initiali

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

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

config.default_per_page = 50 #in config/initializers/active_admin.rb
或者,如前所述,通过使用config.per_页面对每个资源进行设置

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

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

我的设置:

带有ActiveAdmin 1.0.0pre的Rails 4.2

背景:

如果传入,ActiveAdmin将解释每_页查询字符串参数 ActiveAdmin使用隐藏字段hidden\u active\u admin\u per\u page字段 在“索引”页面的“筛选器”部分中,在其他筛选/分页过程中维护此设置,即当此设置更改时,它将新值作为查询字符串参数与其他筛选条件一起发送 我决定利用这个内置功能,只需公开这个隐藏字段,并将其作为下拉列表显示给管理员即可

我用的代码

工作原理

从隐藏字段中获取每页值,ActiveAdmin使用该字段在客户端管理每页设置

每页var\u数量=$hidden\u active\u admin\u per\u page.val

删除active admin添加的隐藏字段,因为我们和您请求了下拉列表:

$hidden\u active\u admin\u per\u page.remove

将可见输入添加回表单的筛选器部分

$form.filter\u form.prepend

将每页输入设置为删除字段前检索到的值

$hidden\ U active\ U admin\ U per\ U page\ U数量

其他想法


我在预挂起的输入中硬编码了默认的per_页面,即选择25,因为这是我配置中的默认值。您很可能从rails默认设置中注入此值。

当然可以使用:

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

我觉得没有必要在行动之前就采取行动。
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