2013-04-22 65 views
1

之前在某些帖子中提到過這個問題, 但他們都沒有具體說明,也沒有提出解決方案。如何教導軌形式按鈕提交使用遠程?

我有一個導軌形式。 我用 我想讓這個按鈕通過ajax提交表單,又名remote:true。

在我看來,即使我手動向按鈕添加數據遠程標記,rails.js仍然沒有按提交類型的按鈕, 它不適用於我。 (儘管它應該工作)

但我想要去的路線與新的HTML5按鈕formaction屬性, 因爲這使得它容易得多,分配不同的行動,以不同的按鈕。

所以我問我是否在這裏丟失了一些東西, 或者如果這僅僅是從ujs軌道中丟失了,但是呢?

我只是在rails.js現在挖, 所以也許有人已經想出了一個補丁? 使按鈕類型=提交遠程:真正的工作

回答

0

我不知道我明白你的問題...我不得不明確提交一個遠程表單(因爲一個錯誤在鉻)我的問題是,表單是數據遠程的,但不是botton提交。現在我在botton的onclick中提交,但我必須使用表單本身的提交方法。

讓再清楚不過了......我的形式有數據的遠程屬性爲true,我提交鈕具有 :onclick => "stuff_i_had_to_do_before_submiting();$("new_id_of_my_form").submit();"

希望它幫助...

PS:感謝pduersteler的格式化

和yep「onclick」不好,但之前的東西(「stuff_i_had_to_do_before_submiting()」需要一些紅寶石,我把javascript放在單獨的文件中以供重用...

+0

請注意您的格式。並閱讀不顯眼的JavaScript,因爲你的答案反映了不好的做法。 – pduersteler 2013-09-19 07:23:51

0

我用它來做到這一點:

  • 一類添加到提交按鈕與「js-」啓動時,它可以作爲鉤在一個小的jQuery腳本來檢索按鈕/插入。
  • 在JS我檢索按鈕,就可以做preventDefault();避免提交
  • 可選我可以驗證DATAS或顯示某種警報/情態動詞的意見等
  • 最後我打電話$.ajax做asycronous呼叫

這裏一個小例子

= f.submit 'myButton', class: 'js-my_async_form' 
:javascript 
    jQuery(function($) { 
    $('.js-my_async_form').asyncSubmit(); 
}); 

,並在這裏你有 「小插件」

jQuery(function($) { 
    jQuery.fn.asyncSubmit = function(){ 
    return this.each(function() { 
     var mybutton = $(this); 
     var completed = function(answer) { 
     // do some stuff 
     }; 

     var error = function(answer) { 
     //do some stuff 
     }; 

     var submit_click = function(event){ 
     event.preventDefault(); 
     $.ajax({ 
      url: //my_form_path, 
      type: //get or post, 
      success: completed, 
      error: error, 
      dataType: 'json' 
     }); 
     } 

     mybutton.click(submit_click); 
    }); 
    } 
}); 

它是和我的腳本適應所以小心處理!