【发布时间】:2014-10-28 11:39:15
【问题描述】:
ActiveAdmin 文档 explain 如何禁用分页并使用 config.per_page 在资源索引中设置每页的记录数,但我想知道是否有内置方法允许用户设置 @ 987654323@ 重视自己,例如带有下拉菜单?
【问题讨论】:
标签: ruby-on-rails drop-down-menu pagination settings activeadmin
ActiveAdmin 文档 explain 如何禁用分页并使用 config.per_page 在资源索引中设置每页的记录数,但我想知道是否有内置方法允许用户设置 @ 987654323@ 重视自己,例如带有下拉菜单?
【问题讨论】:
标签: ruby-on-rails drop-down-menu pagination settings activeadmin
当然可以使用:
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
【讨论】:
不幸的是,没有这种可能性。 您只能将其设置为全局默认值
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]
【讨论】:
我知道这个问题已经有几年的历史了,但是如果我遇到它,其他人可能会,而我终于找到了一种使用一些非常简单的 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);
}
});
工作原理
从 ActiveAdmin 用来管理客户端 per_page 设置的隐藏字段中获取 per_page 值
var per_page_qty = $("#hidden_active_admin_per_page").val();
删除活动管理员添加的隐藏字段(因为我们 cannot simply unhide the hidden field 并且您请求了下拉列表:))
$("#hidden_active_admin_per_page").remove();
将“可见”输入添加回表单的过滤器部分
$("form.filter_form").prepend(...
将每页输入设置为在删除字段之前检索到的值
$("#hidden_active_admin_per_page").val(per_page_qty);
其他想法
我将“预置”输入(即select)中的默认 per_page 硬编码为 25,因为这是我的配置中的默认值。您很可能会从 rails 默认设置中注入此值。
【讨论】: