在表单提交时向ruby控制器发送Javascript数组

在表单提交时向ruby控制器发送Javascript数组,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,Ajax,我有一个带有提交按钮的表单,它将收集的信息发送到我的事件控制器中的eventscreate操作 我希望能够在提交表单中其余信息的同时,将javascript/JQuery数组idList发送到控制器操作。我该怎么做呢?我知道它涉及一个AJAX函数,但我不知道何时调用它。我必须重写Javascript中的submit函数吗?如果是,如何做到这一点 以下是我创建表单的方式: <%= form_for(@newevent) do |f| %> ... <%= f.submit

我有一个带有提交按钮的表单,它将收集的信息发送到我的事件控制器中的eventscreate操作

我希望能够在提交表单中其余信息的同时,将javascript/JQuery数组idList发送到控制器操作。我该怎么做呢?我知道它涉及一个AJAX函数,但我不知道何时调用它。我必须重写Javascript中的submit函数吗?如果是,如何做到这一点

以下是我创建表单的方式:

<%= form_for(@newevent) do |f| %>
  ...
  <%= f.submit "Create Meeting", class: "btn-submit" %>
<% end %>
任何帮助都将不胜感激,谢谢

编辑:这是关于我的数组的javascript。当用户从“选择同事选择”集合中选择人员时,所选人员的id将添加到数组中。用户还可以通过另一个单击操作删除id

var idList = []; //this is the array of entry ids

$(function (){
    $("#click-me").click(function (e){
        e.preventDefault();
        i++;

        var list = $("#list");
        var name = $("#colleague-select option:selected").text();
        var id = $("#colleague-select").val();

        var remove = "<button type='button' class='remove-me'> X </button>";
        var entry = $("<li>" + name + remove+ "</li>").attr('id',id); //creates entry as JQuery object and sets its id attribute

        list.append(entry); //adds entry to HTML element 'list'
        idList.push(id); //adds id to array which should be the same as entry's id

        return false;
    });
});



$(document).on('click', ".remove-me", function(){
    var entry = $(this).parent();
    var id = entry.attr("id"); //gets value of attribute "id".

    entry.remove();

    var index = idList.indexOf(id); //finds the index number of id within array

    idList.splice(index,1); //removes id from array

});

根据要发送的ID,可以使用隐藏字段存储ID:

<%= form_for(@newevent) do |f| %>

  # ...
  <%= hidden_field_tag 'some_ids[]', [1,2,3], id: 'extra_ids' %>
  <%= f.submit "Create Meeting", class: "btn-submit" %>
<% end %>
要使用Javascript进行设置,请执行以下操作:

$(function (){
    $("#click-me").click(function (e){
        # [...]
        idList.push(id); //adds id to array which should be the same as entry's id

        $('#extra_ids').val(idList);

        return false;
    });
});



$(document).on('click', ".remove-me", function(){
    # [...]
    idList.splice(index,1); //removes id from array
    $('#extra_ids').val(idList);
});

我建议学习一些关于ajax是什么以及它是如何工作的基本教程——你不能在手动提交表单的同时发送数据,因为浏览器正在重新加载页面。那么,还有什么替代方法呢?我想我对AJAX非常了解好吧,我的数组是在填写表单的过程中由用户操作添加到的。因此,如果由于数组是一个变量,我不知道它到底是什么样子,我该怎么写?你能告诉我们你想存储什么吗?我会更新我的问题,告诉你如何创建我的数组。你不必给它一个值,它可以而且应该是一个空数组:是的,它会自动重置。但如果您将其存储在某个地方,则可以将其设置为RoR
def create
  some_ids = params[:some_ids]
  # ...
end
$(function (){
    $("#click-me").click(function (e){
        # [...]
        idList.push(id); //adds id to array which should be the same as entry's id

        $('#extra_ids').val(idList);

        return false;
    });
});



$(document).on('click', ".remove-me", function(){
    # [...]
    idList.splice(index,1); //removes id from array
    $('#extra_ids').val(idList);
});