2012-04-16 121 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; 
});