【问题标题】:Rails - Javascript - Add param to params before form submitRails - Javascript - 在表单提交之前将参数添加到参数
【发布时间】:2017-08-08 22:06:20
【问题描述】:

我有一个针对多个学生的表格,每个学生旁边都有复选框以收集他们的 ID。我正在尝试使用两个按钮,每个按钮都指向不同的表单,并且我尝试通过单击按钮提交参数但无济于事:

simple_form_for - multiple submit buttons with different params

有没有办法在提交表单之前编写一些向参数添加参数的JS?我的表格如下:

<%= simple_form_for :pupils, url: edit_multiple_school_group_pupils_path(school, group) do |f| %>
  ...
  ...
  <%= f.button :submit, 'Change Levels', name: 'editing', value: 'levels' %>
  <%= f.button :submit, 'Move to A Class', name: 'editing', value: 'classes' %>
<% end %>

每个按钮在原始 HTML 中都有自己的 ID,因此我希望有一种方法可以在表单提交之前将其提取出来并将其添加到参数中。

我对 JS 非常熟悉,所以甚至不知道从哪里开始。提前致谢。

【问题讨论】:

    标签: javascript ruby-on-rails


    【解决方案1】:

    我不是 100% 确定 rails 部分需要什么,但听起来你想序列化你的表单。

    这很容易实现。下面是一个序列化到 JSON 函数的示例

    function toJSONString( form ) {
        var obj = {};
        var elements = form.querySelectorAll( selectors );
        for( var i = 0; i < elements.length; ++i ) {
            var element = elements[i];
            var name = element.name;
            var value = element.value;
    
            if( name ) {
                obj[ name ] = value;
            }
        }
    
        return JSON.stringify( obj );
    }
    

    选择器几乎可以是您在表单中想要的任何东西。输入、文本区域、按钮等。

    希望这会有所帮助!

    【讨论】:

    • 对不起,我真的很纠结 JS - 这段代码会在参数提交到 Rails 服务器之前将变量添加到参数中吗?
    • 以上代码所做的就是将您的表单序列化为 JSON 对象。您提到按钮有自己的 ID。您应该能够定义选择器并抓取它们。
    猜你喜欢
    • 2023-03-12
    • 2022-01-05
    • 2010-11-02
    • 2023-04-08
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    相关资源
    最近更新 更多