2012-04-16 125 views
3

我有一个form_for @object有两个按钮。Rails窗体与ajax和非ajax按钮

第一个按钮呈现“显示动作”时,第二个按钮再次呈现相同的形式。所以我希望后者是ajax处理的。

是否有可能有一个非ajax按钮和ajax按钮在同一形式或我必须改变策略?

也许我需要一个form_for with'remote:true',以便这两个按钮都是ajax,但是,那么我将如何管理第一个按钮来呈现正确的'show view'?

或者唯一真正的解决方案是有两种不同的形式?

谢谢。

回答

2

您可以尝试挂钩按钮onClick事件,删除data-remote="true"属性,提交表单并再次添加data-remote="true"。我不知道这是否是最好的方式,但它应该起作用。

function sendWithoutAjax() { 
    $('my_form_id').removeAttr("data-remote"); 
    $('my_form_id').submit(); 
    $('my_form_id').data("remote", "true"); 
} 

事情是这样的......

+0

问题的是:如果提交按钮实际上是一个''用一个值(提交消息),使用form.submit()不会传递被点击的按钮的输入提交消息。 – 2015-10-05 16:55:02

0

我认为最简单的方法是使用jQuery Form插件。然后,你可以创建表格提交到你的非Ajax动作,而Ajax功能将附着在提交按钮本身:

$(".ajax_submit_button").click(function() { 
    $(this).closest("form").ajaxSubmit({ 
    // options go here 
    ... 
    }); 
    return false; 
});