Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.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
Javascript 如何将activeadmin查询字符串传递给批处理操作?_Javascript_Ruby On Rails_Activeadmin - Fatal编程技术网

Javascript 如何将activeadmin查询字符串传递给批处理操作?

Javascript 如何将activeadmin查询字符串传递给批处理操作?,javascript,ruby-on-rails,activeadmin,Javascript,Ruby On Rails,Activeadmin,我正在使用ActiveAdmin构建一个管理UI Ruby v2.0 Rails 4.0.13 ActiveAdmin 1.0.0pre 我正在创建一个batch_操作,该操作获取已过滤ID的列表并将其存储为一个段。除了段的名称之外,我还想存储创建该段的activeadmin查询字符串 当前页面的查询字符串似乎没有与batch_action post一起传递,因此我似乎必须添加一些Javascript来获取并传递它 我想知道是否有我忽略的解决方案,或者是否有其他人解决了这个问题?这是我今天下

我正在使用ActiveAdmin构建一个管理UI

  • Ruby v2.0
  • Rails 4.0.13
  • ActiveAdmin 1.0.0pre
我正在创建一个batch_操作,该操作获取已过滤ID的列表并将其存储为一个段。除了段的名称之外,我还想存储创建该段的activeadmin查询字符串

当前页面的查询字符串似乎没有与batch_action post一起传递,因此我似乎必须添加一些Javascript来获取并传递它


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

这是我今天下午提出的解决方案

我添加了文件/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。Tester是我们应用程序中的一个模型

活动的\u admin Tester资源有一个批处理\u操作:创建\u段,它采用:name、:query和:id列表,并创建一个测试程序段

仅当当前页面是活动的\u admin testers页面时,才会运行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);

这是我今天下午想出的解决办法。