如何将activeadmin查询字符串传递给batch_action?

时间:2015-04-06 20:52:34

标签: javascript ruby-on-rails activeadmin

我正在使用ActiveAdmin构建管理UI。

  • Ruby v2.0
  • Rails 4.0.13
  • ActiveAdmin 1.0.0pre

我正在创建一个batch_action,它获取已过滤ID的列表并将它们存储为段。除了段的名称,我还要存储创建段的activeadmin查询字符串。

当前页面的查询字符串似乎没有传入batch_action帖子,因此我似乎必须添加一些Javascript来抓取它并传递它。

我想知道是否有一个我忽视的解决方案,或者是否有其他人解决了这个问题?

1 个答案:

答案 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);