2012-09-30 34 views
1

我實現了jQuery的可拖放/可拖拽的筆記列表,以便對它們進行分層次排序,這在當時工作正常,但我覺得自己做得太多了。在創建手動Ajax請求時使用jquery-rails(ujs)

整個csrf部分手動發送請求,我也手動評估響應,這是ujs提供的功能。有沒有一種方法可以無縫地整合,以便我可以使用ujs庫的優點?

我想到的一個可能的解決方案是將整個可拖動的元素包裝成<form data-remote="true">,但是這感覺有點ha。。

$(function() 
{ 
    $('#notes-container .note').draggable(); 

    $('#notes-container .note').droppable({ 
     drop: function(event, ui) 
     { 
      $.ajax({ 
       type: 'PUT', 
       url: ui.draggable.find('form').attr('action'), 
       data: { 
        authenticity_token: $('meta[name="csrf-token"]').attr('content'), 

        task: { 
         parent_id: $(this).data('id') 
        } 
       } 
      }); 
     } 
    }); 

}); 
+0

這並不是什麼黑客攻擊,你只需要爲整個表單的處理提交AJAX。我做了很多。我有幾十個AJAX動作的remote => true的表單。但要小心,我有一小組用戶(如277 MAX),我不關心他們必須啓用javascript來使用我的網站。如果您擔心對禁用JavaScript的用戶不顯眼或擔心,我不是最好聽的。 – RadBrad

+0

,因爲這應該是一個小小的web應用程序,我覺得網站應該不斷髮展,並且不支持,我不會給用戶使用任何東西,例如IE <8等。我的目標是保持代碼乾淨,乾爽,而不是向下 - 兼容十年;-) – pduersteler

回答

0

通過將整個形式,我需要進入元件,然後使draggable/droppable回調中的值填寫表格需要和燒製,然後由jquery-rails處理的.submit()解決。