我正在使用ActiveAdmin构建管理UI。
我正在创建一个batch_action,它获取已过滤ID的列表并将它们存储为段。除了段的名称,我还要存储创建段的activeadmin查询字符串。
当前页面的查询字符串似乎没有传入batch_action帖子,因此我似乎必须添加一些Javascript来抓取它并传递它。
我想知道是否有一个我忽视的解决方案,或者是否有其他人解决了这个问题?
答案 0 :(得分:1)
这是我今天下午提出的解决方案。
我添加了文件/assets/javascripts/active_admin/query_string.js,其中包含将查询字符串拉出当前页面的代码。
我正在解码它,但这只是取决于你想用它做什么:
(function (w, d, $, undefined) {
'use strict';
var admin_query_string = function() {
var href = window.location.href,
tokens = href.split('?'),
qs = '';
if (tokens.length > 1) {
qs = decodeURIComponent(tokens[1]);
}
return qs;
};
w.admin_query_string = admin_query_string;
}(window, document, jQuery));
然后我添加了文件/assets/javascripts/active_admin/testers.js。测试器是我们应用程序中的模型。
active_admin Tester资源有一个batch_action:create_segment,它接受:name,:query和list of:ids并创建一段测试人员。
如果当前页面是active_admin测试人员页面,则只运行javascript:
(function () {
'use strict';
$(function() {
if ($('body.admin_testers').length) {
$("a.batch_action[data-action='create_segment']").on('click', function() {
$("input[name='query']").val(mycrowd_admin_query_string());
});
}
});
}).call(this);