Javascript Rails使用AJAX和POST形成<;输入类型=提交>;

Javascript Rails使用AJAX和POST形成<;输入类型=提交>;,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,这个问题与我的问题非常相似,但我的问题并没有完全解决 所以我有一个有很多按钮的表单。每个按钮都有一条不同的提交消息:使用railssubmit\u标记helper生成类似HTML的内容 <!-- AJAX buttons --> <input type="submit" value="Preview" name="commit"> <input type="submit" value="Send me a preview" name="commit"> <

这个问题与我的问题非常相似,但我的问题并没有完全解决

所以我有一个有很多按钮的表单。每个按钮都有一条不同的提交消息:使用rails
submit\u标记
helper生成类似HTML的内容

<!-- AJAX buttons -->
<input type="submit" value="Preview" name="commit">
<input type="submit" value="Send me a preview" name="commit">
<!-- POST buttons -->
<input type="submit" value="Send to me" name="commit">
<input type="submit" value="Send to all" name="commit">

表单最初不是AJAX,但我想通过AJAX和最上面的两个按钮提交表单。但是(在前面的问题中没有提到这个问题),我还必须确保在参数中传递了正确的提交消息

使用像这样的代码

<% text = "Preview" # etc.
<%= submit_tag( text, 
        onclick: " 
            var form = $(this).closest('form');
            form.data( 'remote', 'true' );
            form.submit();
            form.removeAttr('data-remote');
            return false") %>

好的,这是我找到的解决方案

Rails视图(
ajax
这里只是一个布尔值,不管我们是否希望按钮在ajax中执行)


javascript代码

function ajaxSubmit(e){
    e.preventDefault();
    var target = $(e.target)
    var form = target.closest('form')
    var tmp = form.data('remote')
    var input = $('<input />').attr('type', 'hidden')
        .attr('name', "commit")
        .attr('value', target.val())
        .appendTo(form);
    form.data('remote', true)
    form.submit()
    if(!tmp){
        form.removeAttr('data-remote');
    }
    input.remove()
    return false;
}
功能ajaxSubmit(e){
e、 预防默认值();
var target=$(e.target)
var form=target.closest('form')
var tmp=form.data('remote')
变量输入=$('').attr('类型','隐藏')
.attr(“名称”,“提交”)
.attr('value',target.val())
.附录(表格);
form.data('remote',true)
表格提交(
如果(!tmp){
removeAttr(“数据远程”);
}
input.remove()
返回false;
}

请解释一下反对票。我看不出这个问题有多违反指导原则。。。?
function ajaxSubmit(e){
    e.preventDefault();
    var target = $(e.target)
    var form = target.closest('form')
    var tmp = form.data('remote')
    var input = $('<input />').attr('type', 'hidden')
        .attr('name', "commit")
        .attr('value', target.val())
        .appendTo(form);
    form.data('remote', true)
    form.submit()
    if(!tmp){
        form.removeAttr('data-remote');
    }
    input.remove()
    return false;
}